// questo programma vi fa familiarizzare con le
// strutture dati dei FILE (cosa e' un puntatore a file)
// scrive in un file in modalita' append
// legge da un file dall'inizio fino all'ultima sua stringa
#include <stdio.h>

int main()
{
   char nome[256], cognome[256], tel[256];
   char finito;
   char nomefile[]="rubrica.txt"	;
   FILE *Fp1;

   // Apro il file in modalita' append e lettura testo (a+)
   Fp1 = fopen(nomefile, "a+"); // MODIFICA
   if (Fp1==NULL){
      printf("File %s not found\n", nomefile);
      exit(-1); 
   }
   printf("Il puntatore (*Fp) al file %s e' %d\n\n", nomefile, Fp1);
	
   finito='n';
   while((finito=='n') || (finito=='N'))
   {
      printf("Inserire Nome: "); scanf("%s", nome);
      printf("Inserire Cognome: "); scanf("%s", cognome);
      printf("Inserire TEL: "); scanf("%s", tel); 
      fprintf(Fp1, "%s\t%s\t%s\n", nome, cognome, tel);
      fflush(stdin);
      printf("Finito? S(i) oppure N(o) --> ");
      scanf("%c", &finito);
   }

   // riavvolgo il file per poterlo rileggere dall'inizio
   rewind(Fp1); // MODIFICA
   // il puntatore della posizione corrente del file e' all'inizio
   // perche' l'ho rivvolto, quindi lo leggeremo dall'inizio
   // IDEA: continuo a leggere con la stessa maschera con cui ho
   // scritto fino a che la fscanf assegna il numero di campi corretto
   printf("\n\nRubrica:\n");
   while ( fscanf(Fp1, "%s\t%s\t%s\n", nome, cognome, tel) == 3 ) 
   {
      printf("%s %s, %s\n", nome, cognome, tel);
   }
   
   fflush(Fp1);
   fclose(Fp1);   // mi ricordo di chiudere il file 

   fflush(stdin);
   getchar(); 
   exit(0);
}