int felvetel()
{
FILE *ptr_myfile;
struct stadion* my_record;
my_record = malloc(sizeof(struct stadion) * 1);
ptr_myfile=fopen("test.bin","wb");
if (!ptr_myfile)
{
printf("Nem lehet megnyitni a fajlt!");
return 1;
}
printf("Varos: ");
scanf("%s", my_record[0].varos);
printf("Csapat: ");
scanf("%s", my_record[0].csapat);
printf("Nezoszam: ");
scanf("%i", my_record[0].nezoszam);
printf("Koltseg: ");
scanf("%i", my_record[0].koltseg);
printf("Atadas eve: ");
scanf("%i", my_record[0].ev);
printf("Atadas honapa: ");
scanf("%i", my_record[0].honap);
printf("Atadas napja: ");
scanf("%i", my_record[0].nap);
fwrite(my_record, sizeof(struct stadion), 1, ptr_myfile);
fclose(ptr_myfile);
return 0;
}
它不起作用。当我想在3.行中添加一个int时,我得到了“Segmentation fault”,但我不知道为什么。
请检查,它好吗?
int listazas()
{
FILE *ptr_myfile;
struct stadion my_record;
ptr_myfile=fopen("test.bin","rb");
if (!ptr_myfile)
{
printf("Nem lehet megnyitni a fajlt!");
return 1;
}
while (!(feof(ptr_myfile)))
{
fread(&my_record,sizeof(struct stadion),1,ptr_myfile);
printf("%s\t",my_record.varos);
printf("%s\t",my_record.csapat);
printf("%i\t",my_record.nezoszam);
printf("%i\t",my_record.koltseg);
printf("%i\t",my_record.ev);
printf("%i\t",my_record.honap);
printf("%i\t",my_record.nap);
}
fclose(ptr_myfile);
return 0;
}
我希望它运行良好,但我无法尝试,因为我的二进制文件中没有任何内容。
为什么要将结构添加到二进制文件两次?