000
14.07.2003, 13:33 Uhr
~Raziel
Gast
|
Hallo Zusammen
Kurz zur Erklärung: Ich erstellen eine Textdatei und fülle diese ganz normal mit fprintf(). Das Ziel ist nun, über diese Datei eine Prüfsumme zu berechnen. Die Funktion, welche ich zur Berechnung der Prüfsumme benutze, berechnet diese allerdings nur über Daten welche im Hauptspeicher sind. Um diese Funktion also anwenden zu können muss ich die Datei in den Speicher auslesen. Hiezu bestimme ich die Dateigrösse mittels ftell() und reserviere mir mit malloc() den benötigten Speicher. Danach setze ich den Dateizeiger mit fseek() auf den Anfang und möchte mit fread() die Datei auslesen. Hier der Code (habe das öffnen und schliesen der Datei weggelassen):
FILE *stream; int ia, ib; int iDateigroesse = 0; char *ptr;
fflush(stream); //Puffer leeren iDateigroesse = ftell(stream); //Dateigrösse ermitteln ptr = (char*) malloc(iDateigroesse); //Speicher reservieren a = fseek(stream, 0, SEEK_SET); //Zeiger an Dateianfang stellen b = fread(ptr, iDateigroesse, 1, stream); //Datei auslesen
Das alles funktioniert solange, bis ich meine Daten in der Textdatei mit einem Zeilenumbruch ( \n ) trenne. Dann bekomme ich als Rüchgabewert von fread() immer 0. Kann mir jemand sagen wieso das so ist und wie ich es anders machen kann? Man muss doch eine Datei auslesen können, welche Zeilenumbrüchen enthält. |