Există un indicator care arată unde s-a ajuns cu citirea fișierului.
De exemplu, să luăm aceleași date de intrare: 10 9 8 7 6 5 4 3 2 1
Când indicatorul ajunge la 1 el nu știe ca acolo se termină fișierul, mai încearcă o citire și atunci descoperă că a ajuns la final. Și îți afișează de două ori ultima valoare pentru că afișezi fără verifici dacă s-a ajuns la final.
while( !fin.eof() )
{
fin >> x;
cout << x << ' ';
}
Un alt mod de a evita asta, deși eu le prefer pe celelalte două, este:
# include <fstream>
# include <iostream>
using namespace std;
int main()
{
ifstream fin("date.txt");
int x;
while( !fin.eof() )
{
fin >> x;
if( fin.eof() ) break;
cout << x << ' ';
}
fin.close();
return 0;
}