fstream problem przy czytaniu poprzed read

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.

Kopiuj
        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++;
 
        }
edytowany 1x, ostatnio: madmike
Shalom
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
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/
Kopiuj
char * buf = new char[Zdlugosc+1];
//
plik.read(buf ,Zdlugosc);
buf[Zdlugosc]='\0';

"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.