000
28.08.2005, 20:35 Uhr
~Datei-Frage
Gast
|
Hallo,
Ich möchte gerne eine Datei einlesen in einen String. Dabei gehe ich so vor, dass ich zuerst gucke ob die Datei größer als 256 Byte ist und dann immer 256 Byte aufeinmal einlese mit fread, damit es schneller geht. Wenn nur noch weniger als 256 Byte übrig sind, wird jedes Byte einzeln eingelesen bis zum Schluss. Das Problem ist, dass das Einlesen der 256-Byte-Abschnitte ohne Probleme geht, aber wenn dann am Ende der Datei Byte für Byte einlesen wird steht nur Müll im Buffer. Hier der Code:
C++: |
string Daten1 = ""; try { FILE * pInfoFile2 = fopen (FileName.c_str(),"rb"); char* Daten2 = new char[2]; // 1 Byte + \0 char* Daten3 = new char[257]; //256 Byte + \0 int FileSize; FileSize = _filelength(_fileno(pInfoFile2)); if(!pInfoFile2 == NULL) { if (_filelength(_fileno(pInfoFile2)) > 256) // Ist die Datei größer als 256 Byte? { while(Daten1.length() < (_filelength(_fileno(pInfoFile2)) - 256)) //Dann Einlesen bis noch 256 Byte übrig sind { Sleep(3); fread(Daten3,1,256,pInfoFile2); //256 Byte aufeinmal einlesen Daten3[256] = '\0'; // Null-Terminiert Daten1 += (string)Daten3; //Daten in den String } } while(Daten1.length() < (_filelength(_fileno(pInfoFile2)))) // Den Rest der Datei einlesen { Sleep(3); fread(Daten2,1,1,pInfoFile2); //Jetzt immer nur 1 Byte lesen int i = GetLastError(); Daten2[1] = '\0'; //Null-Terminiert Daten1 += (string)Daten2; // Und Daten in den String } fclose(pInfoFile2); } } catch(...) { }
|
Beim Byteweise einlesen steht immer nur das Zeichen -51 im Buffer. Weiss jemand was da falsch ist? |