// 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 #include 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(); }