Datei lesen, problem



  • Hi@all,

    ich lese mit folgendem Code eine Datei aus:

    ifstream inFile;
    
    inFile.seekg(0, ios::end);
    const int nLen = inFile.tellg();
    inFile.seekg(0, ios::beg);
    
    char* buffer = new char[nLen];
    inFile.read(buffer,nLen);
    cout << buffer;
    inFile.close();
    

    Nun bekomme ich aber bei der Ausgabe von "buffer" noch "²²²²" mit ausgegeben.
    Wenn ich

    char* buffer = new char[nLen-4];
    

    mache, dann bekomme ich den ganzen Inhalt komplett angezeigt.

    Warum?
    Jemand ne Ahnung?

    Vielen Dank.

    Gruß

    Gast



  • Es fehlt vermutlich das \0 am ende (also der Speicher ist zufällig gefüllt)



  • Hi @all,

    kann ich denn nun davon ausgehen, dass [nLen-4] bei jeder Textdatei funktioniert, oder ist das eigentlich falsch.
    Muss ich irgendwie eine abschließende "\0" anfügen?

    Vielen dank.



  • Bei der Ausgabe ist Länge der Datei = 26 (das Alphabet) und die Länge des Buffers ist 30 (also meine 4 mehr).

    Aber warum, ich deklariere doch mit der Länge des Dateiinhaltes.

    Vielen dank.


Anmelden zum Antworten