allora ho dichiarato questa struttura e globalmente queste variabili
codice:
typedef struct{
char nome[20];
char cognome[20];
char lnascita[20];
}classe;
classe alunno[30];
classe temp[30];
int i=0;
nella funzione scrivi_file creo un file binario e scrivo la struttura
codice:
void scrivi_file(){
FILE*fp=NULL;
fp=fopen("anagrafe.dat","ab");
if(fp==NULL) printf("impossibile creare il file\n");
else{
printf("inserisci informazione su file\n");
printf("inserisci nome\n");
fflush(stdin);
gets(alunno[i].nome);
printf("inserisci cognome\n");
gets(alunno[i].cognome);
printf("inserisci luogo di nascita\n");
gets(alunno[i].lnascita);
fwrite(&alunno[i],sizeof(classe),1,fp);
i++;
fclose(fp);
}
}
e nella funzione carica_file carico il file se esiste(il controllo l'ho fatto nel main quindi entro nella funzione solo se fp è diverso da NULL) quello che leggo lo salvo in una variabile temporanea del tipo struct classe.
codice:
void carica_file(FILE*fp){
int j=0;
while(fread(&temp[j],sizeof(classe),1,fp)>0){
j++;
}
}
poi per verificare se ho letto correttamente nella stessa funzione per prova mi sono stampato un campo solo che non lo visualizzo
codice:
printf("%s\n",temp[0].nome);
mi stampa una riga vuota infatti se scrivo per es
codice:
printf("ciao %s\n",temp[0].nome);
ciao lo stampa correttamente ma non visualizzo il resto