Ciao a tutti. Ho un problema con i file binari e con l'feof (praticamente non si ferma alla fine del file).
codice:#include <stdio.h> #include <stdlib.h> #include <string.h> #define dmaxS 100 #define dmax 3 typedef struct record{ char cognome[dmaxS]; char nome[dmaxS]; char sesso; int anno; }record; int main(){ record elenco[dmax]; record elenco2[dmax]; int dim; FILE *fp; int i; for(i=0;i<dmax;i++){ printf("%d)\n",i); printf("Cognome: "); gets(elenco[i].cognome); printf("Nome: "); gets(elenco[i].nome); printf("Sesso: "); scanf("%c",&(elenco[i].sesso)); fflush(stdin); printf("Anno di nascita: "); scanf("%d",&(elenco[i].anno)); fflush(stdin); printf("\n"); } fp = fopen("prova.bin","wb"); if(fp != NULL){ for(i=0;i<dmax;i++){ fwrite(elenco[i].cognome,sizeof(char),dmaxS,fp); fwrite(elenco[i].nome,sizeof(char),dmaxS,fp); fwrite(&(elenco[i].sesso),sizeof(char),1,fp); fwrite(&(elenco[i].anno),sizeof(int),1,fp); } fclose(fp); fp = fopen("prova.bin","rb"); if(fp != NULL){ i=0; while(!feof(fp)){ // non si ferma al terzo ciclo fread(elenco2[i].cognome,sizeof(char),dmaxS,fp); fread(elenco2[i].nome,sizeof(char),dmaxS,fp); fread(&(elenco2[i].sesso),sizeof(char),1,fp); fread(&(elenco2[i].anno),sizeof(int),1,fp); i++; } dim = i; fclose(fp); for(i=0;i<dim;i++){ printf("\n"); puts(elenco2[i].cognome); puts(elenco2[i].nome); printf("%c\n",elenco2[i].sesso); printf("%d\n",elenco2[i].anno); } } } system("pause>nul"); return 0; }

Rispondi quotando
