// questo programma vi fa famigliarizzare 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>
#include <stdlib.h>

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

	// Apro il file in modalita' append testo
	Fp1 = fopen(nomefile, "a");
	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);
	}

	// chiudo il file  e lo riapro in lettura testo
	fclose(Fp1);
	Fp1 = fopen(nomefile, "r");
 	if (Fp1==NULL){
		printf("File %s not found\n", nomefile);
		exit(-1);
	}

	// il puntatore della posizione corrente del file e' all'inizio
	// (il file e' stato appena aperto), 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);
	}
	fclose(Fp1);   // mi ricordo di chiudere il file

	fflush(stdin);
  	getchar();
}

