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.