[Lekcja 34] Odczytywanie z pliku. Nie wczytuje ostatniej liczby w pliku.
Ostatnio zmodyfikowano 2014-12-16 19:13
Rashmistrz Temat założony przez niniejszego użytkownika |
[Lekcja 34] Odczytywanie z pliku. Nie wczytuje ostatniej liczby w pliku. » 2014-12-16 18:24:20 Mój program nie wczytuje mi ostatniej liczby (jest to "3") z końca pliku i wyświetla, że napotkał niepoprawną daną: Nie poprawna dana: X Co powoduje niewczytanie tej ostatniej liczby i dlaczego? Proszę was o wyjaśnienie mi tego. #include <iostream> #include <fstream>
int main() { std::fstream plik; plik.open( "asdf.txt" ); if( !plik.good() ) { std::cout << "BLAD!"; return 0; } int suma = 0, z_pliku; char znak; while( !plik.eof() ) { znak = 'X'; plik >> z_pliku; if( plik.good() ) { suma += z_pliku; std::cout << "Dodano " << z_pliku << ' ' << '(' << suma << ')' << '\n'; } else { plik.clear(); plik >> znak; std::cout << "Nie poprawna dana: " << znak << '\n'; } } std::cout << '\n' << suma; return 0; }
PS. W pliku "asdf.txt" znajduje się przykładowy zestaw danych z lekcji: a 1 2 321b9 ac.de ef#@g 5 #3 |
|
|
Monika90 |
» 2014-12-16 18:36:19 Do sprawdzania czy wczytanie było poprawne nie służy if( plik.good() ) , tylko if( !plik.fail() ) , co można skrócić do if( plik ) |
|
Rashmistrz Temat założony przez niniejszego użytkownika |
» 2014-12-16 19:13:06 OK. Dzięki. W tym był problem. C: |
|
« 1 » |