Einlesen einer txt-Datei mit readfile



  • Guten Morgen,

    ich versuche den Inhalt einer txt-Datei einzulesen, was halbwegs funktioniert, nur dass zuviele, in der Datei nicht existierende, Zeichen eingelesen werden.

    Lese ich beispielsweise 10 Zeichen ein, so werden diese zwar korrekt ausgegeben, nur stehen hintendran weitere Zeichen, die nicht zum Inhalt gehören?

    Ich reserviere zuerst Speicher.

    char* buffer;
    buffer = (char*)calloc( size, sizeof(char) );
    

    Danach lese ich mit Readfile aus:

    ReadFile(hFile,	buffer, size, &dwBytesRead, NULL);
    

    Hat vielleicht jemand eine Idee was ich falsch gemacht haben könnte?



  • Probier mal, deinen Puffer mit Nullen zu initialisieren und dann bei ReadFile size-1 Zeichen einzulesen. Ein char-Array - als String interpretiert - muss immer mit einer binären Null ('\0' bzw. 0, nicht '0') abgeschlossen werden, denn sie signalisiert das Stringende.



  • Vielen Dank für die Antwort!
    Hatte wirklich vergessen das Array mit \0 abzuschließen.



  • Hast du eigentlich einen bestimmten Grund, std::fstream nicht zu verwenden? 😉



  • Statt den gesamten Buffer mit Nullen zu initialisieren kannst du auch folgendes machen:

    char* buffer;
    buffer = (char*) calloc(size, sizeof(char));
    
    ReadFile(hFile, buffer, size-1, &dwBytesRead, NULL);
    buffer[dwBytesRead] = '\0';
    

Anmelden zum Antworten