File Funktionen für große Dateien
-
Hi, ich möchte die File Funktionen (fopen, fread, etc.) für meine Programm verwenden, dass von 1-50MB Binär-Dateien auslesen soll. Problem ist, dass nach einer gewissen Anzahl von fread Funktionen einfach nichts mehr gelesen wird.
Hier mal ein paar Ausschnitte:
//Get file size (in bytes) CurPos = ftell(FileStream);//Store the current position of the seek pointer fseek(FileStream, 0L, SEEK_END);//Set the seek pointer to the end of the file Size = ftell(FileStream);//Store the position (=size) of the seek pointer fseek(FileStream, CurPos, SEEK_SET);//Set the seek pointer back to the beginning // //Den ganzen Inhalt in den Buffer schreiben Data = new unsigned char[Size]; fread(Data, 1, Size, FileStream); fseek(FileStream, CurPos+4, SEEK_SET); //Nun den Header (Zahlen) auslesen und in Vars schreiben if(fread(&VarA, 4, 1, FileStream) != 1) return; if(fread(&VarB, 4, 1, FileStream) != 1) return; if(fread(&VarC, 4, 1, FileStream) != 1) return; if(fread(&VarD, 4, 1, FileStream) != 1) return; //... dann die Forschleife //... dann aufräumen und returnNach dem Ausschnitt kommt ne For-Schleife, die dann immer weiter 4 Bytes in der Datei weitergeht und Werte ausliest. Das Problem ist, dass eben nach kurzer Zeit schon kein Wert mehr ausgelesen wird, sondern 0 zurückgegeben wird.
Ist anhand dieser Codeausschnitte schon ein Fehler zu erkennen, den ich mache
-
ne
-
Du bist im falschen (Unter)forum, das ist kein C++. Im übrigen kann es nicht an einer zu großen Datei liegen, da 50 MB gar nichts sind. Allerdings kann man glaube nicht mit fseek an das Ende der Datei gehen, wenn man sich im Binärmodus findet, eventuell scheitert es ja daran.