allora ho dichiarato questa struttura e globalmente queste variabili
nella funzione scrivi_file creo un file binario e scrivo la strutturacodice:typedef struct{ char nome[20]; char cognome[20]; char lnascita[20]; }classe; classe alunno[30]; classe temp[30]; int i=0;
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 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); } }
poi per verificare se ho letto correttamente nella stessa funzione per prova mi sono stampato un campo solo che non lo visualizzocodice:void carica_file(FILE*fp){ int j=0; while(fread(&temp[j],sizeof(classe),1,fp)>0){ j++; } }mi stampa una riga vuota infatti se scrivo per escodice:printf("%s\n",temp[0].nome);ciao lo stampa correttamente ma non visualizzo il restocodice:printf("ciao %s\n",temp[0].nome);

Rispondi quotando