Ho il seguente programma semplice da leggere da un file di testo (num.txt). Il file di testo ha numeri 1 2 3 4 5 in ogni riga. Quando eseguo il programma, stampa 5 due volte. Qualcuno può dirmi perché sta succedendo questo e come risolverlo? grazie in anticipofscanf legge l'ultimo intero due volte
int main(void)
{
int number;
FILE *file;
int i = 0;;
file = fopen("num.txt", "r");
while (!feof(file)){
fscanf(file, "%d", &number);
printf("%d\n", number);
}
return 0;
}
Ecco il mio file di testo num.xtx
1
2
3
4
5
Ed ecco l'output del programma
1
2
3
4
5
5
C'è un extra di 5
'while (! Feof (file)) {' :: feof() è la causa del problema – wildplasser
maggio vi consiglio di leggere [questo] (http://stackoverflow.com/questions/5431941/ mentre-feof-file-è-sempre-male)? – niklasfi
Qual è il valore restituito da fscanf quando si vede l'ultimo 5? Scommetto che non è 1. ;-) –