!feof , scrive l'ultima frase 2 volte

di il
2 risposte

!feof , scrive l'ultima frase 2 volte

Salve, utilizzando questo codie che compila alla grande senza dare ne warning e ne errore, mi stampa l'ultima frase o parola 2 volte come mai??

#include<stdlib.h>
#include<stdio.h>

int main() {
  FILE *fp;
  char file_lettura[700];
  //int i=20;


		/* apre il file */
  fp=fopen("numeri.txt", "r");

		/* legge e stampa ogni riga */
  while(!feof(fp)) {
    fgets(file_lettura, 700, fp);
    printf("%s \n", file_lettura);
  }


		/* chiude il file */
  fclose(fp);

  return 0;
}

2 Risposte

  • Re: !feof , scrive l'ultima frase 2 volte

    Ciao,
    ti consiglio di leggere questa discussione dove si tratta proprio il tuo problema.
  • Re: !feof , scrive l'ultima frase 2 volte

    L'errore è nella logica dell'esecuzione non nella sintassi:
    #include<stdlib.h>
    #include<stdio.h>
    
    int main() {
    	FILE *fp;
    	char file_lettura[700];
    	//int i=20;
    
    
    	/* apre il file */
    	fp=fopen("numeri.txt", "r");
    
    	/* legge e stampa ogni riga */
    //while(!feof(fp)) { // il controllo va fatto dopo la lettura del file
    
    	while(!ferror(fp)) { // controlla che non ci siano errori nella lettura del file
    		fgets(file_lettura, 700, fp);
    		if (feof(fp)) break; // se non c'è più nulla da leggere, esci dal ciclo
    		printf("%s \n", file_lettura);
    	}
    
    
    	/* chiude il file */
    	fclose(fp);
    
    	return 0;
    }
Devi accedere o registrarti per scrivere nel forum
2 risposte