[C++] Nie wykrywa EOF
Ostatnio zmodyfikowano 2014-12-12 21:11
Vister26 Temat założony przez niniejszego użytkownika |
[C++] Nie wykrywa EOF » 2014-12-09 23:00:33 Oto fragment kodu, który ma wczytywać znaki do momentu napotkania EOF. fstream plik; plik.open( "pozycje.txt", ios::in );
while( !plik.eof() ) { int licznik; memset( dane, 0, 20 ); licznik = plik.tellg(); plik.getline( dane, 20 ); plik.clear(); plik.seekg( licznik, ios::beg ); }
plik.close();
Niestety pętla nie zatrzymuje się. Gdzie jest błąd? |
|
darko202 |
» 2014-12-09 23:36:43 1. może plik nie ma znacznika końca pliku 2. sprawdzaj co odczytuje - wyświetl na ekranie 3. sprawdź status czytania plik.getline
dziś jak spojrzałem to zastanowiło mnie 4. std::istream::seekg ? na http://www.cplusplus.com/reference/istream/istream/seekg/ flaga ios_base::beg beginning of the stream
to by znaczyło, że zaczyna od początku pliku chyba ? tzn. program nie daje mu osiągnąć końca
|
|
Monika90 |
» 2014-12-10 16:33:01 Nie widzę sensu w tym twoim kodzie, niestety. Spróbuj może tego: const int rozmiar = 20; char wiersz[ rozmiar ]; while( plik.getline( wiersz, rozmiar ) ) { std::cout << wiersz << '\n'; }
if( !plik.eof() && plik.gcount() == rozmiar - 1 ) std::cout << "Wiersz zbyt długi!\n";
|
|
Vister26 Temat założony przez niniejszego użytkownika |
» 2014-12-12 21:11:10 Ok, dzięki! Zbyt pobieżnie przeczytałem o powyższych funkcjach(metodach), ale już ogarniam. |
|
« 1 » |