Problem beim auslesen von Datei...



  • hallo,

    ich hab mal wieder ein kleines problemchen und komm einfach nicht drauf...

    der grund ist dieser schnipsel:

    FILE *read;
    
    	read = fopen("PMA.txt","r+");
    
    	if(read==NULL)
    	{
    		printf("Fehler beim lesen!");
    	}
    	else
    	{
    	        fgets(pget[1].hp, 99, read);
    	        printf("Homepage: %s", pget[1].hp);
    	}
    	fclose(read);
    

    kann mir jemand sagen ob sich hier ein fehler verbirgt?
    ich hab schon rumprobiert und der Fehler liegt an wohl an dem ausdruck:

    fclose(read);
    

    ich hab Sleep(5000) direkt vor fclose(read) gesetzt und der fehler kam erst nach 5 sekunden. wenn ichs dahinter setze kommt der ausnahmefehler sofort....
    wieso das so ist weiss ich nicht und komm mit der bitte hier her mir zu helfen 🙂



  • Dieser Thread wurde von Moderator/in SideWinder aus dem Forum DOS und Win32-Konsole in das Forum ANSI C verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Hast du hinter pget[1].hp überhaupt genug Platz rur Verfügung, um 99 Byte Daten unterzubringen? (andernfalls könnte es sein, daß fgets einfach in fremdem Speicher weiterschreibt, und z.B. den Inhalt von 'read' zerlegt)

    PS: Und ganz wichtig: Wie lautete der Fehler?



  • also ich hab für hp[100] veranschlagt. das is genau richtig. ich hab hp[100] auch als char deklariert weil ich ja text auslesen möchte.

    und hier die Fehlermeldung:

    Unbehandelte Ausnahme bei 0x6f6c6c61 in pw.exe:
    0x0000005:Zugriffsverletzung-Leseposition 0x6f6c6c61.

    dabei öffnet sich im debugger unter .NET 2003 die seccinit.c
    in dieser zeile:

    cookie ^= perfctr.LowPart;
    


  • ich kann einwandfrei in die datei schreiben, aber beimm auslesen bekomm ich irgendwie probleme...

    wenn erwünscht kann ich auch den ganzen Quellcode posten



  • Und wie groß ist das Array 'pget'?



  • ich glaub ich hab den fehler...

    ich hab zwei strukturen.

    die eine lautet:

    struct pass{
    		char hp[100];    //////hp=homepage
    		char un[30];     //////un=username
    		char pw[50];     //////pw=password
    		char txt[1000];  //////txt=additional text
    	}pws[200];
    

    die andere

    struct get{
    		char hp[100];    //////hp=homepage
    		char un[30];     //////un=username
    		char pw[50];     //////pw=password
    		char txt[1000];  //////txt=additional text
    	}pget[1];
    

    und da is auch schon der fehler oder? alles zweimal deklariert...



  • Das ist kein Fehler, allerhöchstens schlechtes Design.

    Der Fehler ist dass pget nur ein Element hat, Du aber ins zweite Element reinschreibst.



  • vielleicht liegts ja daran, daß du fclose() nicht in den else-teil gesetzt hast. in deinem code wird fclose() nämlich auch dann aufgerufen, wenn read==NULL ist.


Anmelden zum Antworten