si la scrittura funziona perfettamente, in quanto escono tutti i dati nel file.dat, mentre se cerco di leggere non accade nulla nel programma, ovver andando a leggere il file e stampare la rubrica non esce alcuna voce.
si la scrittura funziona perfettamente, in quanto escono tutti i dati nel file.dat, mentre se cerco di leggere non accade nulla nel programma, ovver andando a leggere il file e stampare la rubrica non esce alcuna voce.
STAMPA A VIDEO
LETTURA DA FILEcodice:case 3 ://stampa rubrica printf("CONTENUTO DELLA RUBRICA (%d VOCI)\n", utentimemorizzati) ; for (v=0;v<utentimemorizzati;v++) { printf("Nome: %s\n",rubrica[v].nome); printf("Cognome: %s\n",rubrica[v].cognome); printf("Telefono: %s\n",rubrica[v].telefono); printf("Citta: %s\n",rubrica[v].citta); } break;
codice:case 6://lettura del file FILE *fp1;//puntatore fp1 = fopen("rubrica.dat", "r");//Lettura file. v=0; while(!feof(fp1)) //finchè non finisce il file { fscanf(fp1,"%s",rubrica[v].nome); fscanf(fp1,"%s",rubrica[v].cognome); fscanf(fp1,"%s",rubrica[v].citta); fscanf(fp1,"%s",rubrica[v].telefono); v++; } fclose(fp1); printf("Rubrica letta!\n"); break;
Ovviamente alla fine della lettura devi aggiornare la variabile utentimemorizzati altrimenti come fai ad usarla nella visualizzazione?
No MP tecnici (non rispondo nemmeno!), usa il forum.
Grazie mille! adesso funziona, più o meno; ho incrementato il valore utentimemorizzati ma quando vado a leggere il file oltre alle voci già presenti esce un ulteriore voce vuota
Diminuisci di 1 la variabile utentimemorizzati dopo la lettura
No MP tecnici (non rispondo nemmeno!), usa il forum.
avevo già provato , ma se diminuisco "utentimemorizzati" al termine della lettura quando stampo le voci non me ne stampa alcuna, mentre se incremento oltre che a stampare quelle realmente presenti stampa anche campi vuoti
scusa il ritardocodice:FILE *fp1;//puntatore fp1 = fopen("rubrica.dat", "r");//Lettura file. v=0; while(!feof(fp1)) //finchè non finisce il file { fscanf(fp1,"%s",rubrica[v].nome); fscanf(fp1,"%s",rubrica[v].cognome); fscanf(fp1,"%s",rubrica[v].citta); fscanf(fp1,"%s",rubrica[v].telefono); v++; utentimemorizzati--; } fclose(fp1); printf("Rubrica letta!\n"); break;
Non devi modificare la variabile utentimemorizzati all'interno del ciclo.
In quel momento stai leggendo i dati da file e non sai quanti sono i nominativi totali, quindi la variabile utentimemorizzati non ha un valore iniziale. Devi assegnare il suo valore SOLO dopo avere letto tutti i dati, quindi fuori dal ciclo, dopo la fclose e devi scrivere
utentimemorizzati = v-1;
Cerca di comprendere il perché di questa semplice cosa ...
No MP tecnici (non rispondo nemmeno!), usa il forum.