Ciao a tutti, qualcuno sa dirmi perchè, in questo semplice programma, il ciclo
while stampa due volte lo stesso testo (il quale ha meno di 2000 caratteri)?
Cioè, in teoria dovrebbe leggere il testo una volta e poi il puntatore dovrebbe stare sull'EOF e quindi il ciclo non dovrebbe essere eseguito.
Oppure ammesso che il puntatore al file non sia ancora posizionato sull'EOF, il while verrebbe eseguito ma quando viene eseguita l'istruzione fgets() dovrebbe leggere "il nulla" e quindi non stampare niente.
Invece stampa due volte lo stesso testo.
In effetti anche leggendo (per esempio) 50 caratteri per volta, il ciclo viene sempre eseguito due volte sugli stessi ultimi caratteri.
Inoltre, questo problema non me lo da se eseguo il programma su un altro compilatore come questo (online)
https://www.onlinegdb.com/online_c_compile
Per inciso, il testo contenuto nel file è Lorem Ipsum Standard di Wikipedia (
https://it.wikipedia.org/wiki/Lorem_ipsu)
int main(int argc, char **argv)
{
FILE *file;
char text[1000];
file = fopen("text.txt", "r");
while(!feof(file)) {
fgets(text, 2000, file);
printf("Puntatore: %p\n%s\n\n", file, text);
}
fclose(file);
return 0;
}