fstream problem przy czytaniu poprzed read

0

Nie wiem czemu, ale ponizszy przyklad zamiast zrozumialego tekstu wypisuje zwyczajne krzaki. Orientuje sie ktos czemu tak jest? Kombinowalem na rozne sposoby, ale ciagle jest tak samo.

        int Zdlugosc = znajdz.length();
        char * buf = new char[Zdlugosc];
 
        int kursorPozycja = 0;
 
 
while(!plik.eof()){
                plik.seekg(kursorPozycja);
 
                plik.read(buf ,Zdlugosc);
 
                cout<<buf; //krzaki
                kursorPozycja++;
 
        }
0

Debuger ukradli? Jeśli mam wróżyć z kart to: nie bierzesz pod uwagę tego że istream::read NIE dodaje null-byte na końcu tej tablicy charów, w efekcie wypisanie buf powoduje wypisanie tego co czytałes z pliku i dodatkowo jeszcze masy innych bajtów które leżą dalej w pamięci aż się trafi tam gdzieś \0. Rozwiązanie?

  1. Czytać DOKUMENTACJE http://www.cplusplus.com/reference/iostream/istream/read/
char * buf = new char[Zdlugosc+1];
//
plik.read(buf ,Zdlugosc);
buf[Zdlugosc]='\0';

1 użytkowników online, w tym zalogowanych: 0, gości: 1