Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[Lekcja 34] Odczytywanie z pliku. Nie wczytuje ostatniej liczby w pliku.

Ostatnio zmodyfikowano 2014-12-16 19:13
Autor Wiadomość
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.

C/C++
#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
P-122951
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 )
P-122952
Rashmistrz
Temat założony przez niniejszego użytkownika
» 2014-12-16 19:13:06
OK. Dzięki. W tym był problem. C:
P-122954
« 1 »
  Strona 1 z 1