Salve,
ho un problema con un programma C. Quest'ultimo consiste in un record di struct da memorizzare in un file, quindi inserisco i dati e subito dopo li trascrivo su un file binario con estensione ".dat". Ora, il problema è che inserisce si i dati, ma al momento della visualizzazione parte e non si ferma più, e non capisco il perché. Altra cosa strana: se apro il file generato dal programma, all'interno non c'è niente, è vuoto e la dimensione segnata è 0 KB anche se la funzione per scrivere su file ritorna valore vero, ovvero che la scrittura è andata a buon fine. Chi può aiutarmi? Allego il codice qui di seguito:
#include <stdio.h>
#define USER_FILE "Village.dat"
FILE *fp;
typedef struct{
int g;
int m;
int a;
}date;
typedef struct{
char surname[20];
char name[20];
date d;
}dwell;
dwell village;
void write_to_file();
void print_file();
int main(){
fp=fopen("Village.dat","wb");
write_to_file();
fclose(fp);
fp=fopen("Village.dat","wb");
print_file();
fclose(fp);
return 0;
}
void write_to_file(){
int r;
do{
printf("Cognome: ");
scanf("%s",village.surname);
printf("Nome: ");
scanf("%s",village.name);
printf("Data di nascita[gg/mm/aa]: ");
scanf("%d %d %d",&village.d.g,&village.d.m,&village.d.a);
fwrite(&village,sizeof(dwell),1,fp);
printf("Finito l'inserimento dei dati? [1:SI/0:NO]");
scanf("%d",&r);
}while(!r);
return;
}
void print_file(){
printf("Lista abitanti\n");
fread(&village,sizeof(dwell),1,fp);
while(!feof(fp)){
printf("%-25s\t",village.surname);
printf("%-25s\t",village.name);
printf("%d/%d/%d",village.d.g,village.d.m,village.d.a);
fread(&village,sizeof(dwell),1,fp);
}
return;
}