很抱歉使用我的母语编写该程序,但是我似乎真的找不到为什么它不起作用。因此,我进行了测试,并且正确读取了数组的所有值,但是当我尝试查看.dat文件时,仅在for函数(a [0] .marca)中读取了第一个单词。
这是输入I also tested to see if it reads correct
这是.dat文件It only writes the first
#include <stdio.h>
#include <stdlib.h>
struct data
{
int anul;
int luna;
};
typedef struct data DATA;
struct automobil
{
char marca[20];
char carburant;
char model[5];
DATA fabricatie;
};
typedef struct automobil AUTOMOBIL;
int main()
{
AUTOMOBIL a[100];
int n;
FILE *f;
int i;
if((f=fopen("evidenta.dat","wb"))==NULL)
{
exit(1);
}
printf("Cate automobile sunt ?"); scanf("%d",&n); // The number of cars registered
for(i=0;i<n;i++) // getting the details about every car
{
printf("\nMarca ? : "); fflush(stdin); gets(a[i].marca);
printf("\nCarburant ? : "); fflush(stdin); getch(a[i].carburant);
printf("\nModelul? :"); fflush(stdin); gets(a[i].model);
printf("\nLuna fabricatie ? :"); scanf("%d",&a[i].fabricatie.luna);
printf("\nAn fabricatie ? : "); scanf("%d",&a[i].fabricatie.anul);
// After getting a line it has to write it in the binary file
fwrite(&(a[i]),sizeof(AUTOMOBIL),1,f); //It writes only a[0].marca
}
for(i=0;i<n;i++)
{
printf("\n %s",a[i].marca);
printf("\n %c",a[i].carburant);
printf("\n %s",a[i].model);
printf("\n %d",a[i].fabricatie.luna);
printf("\n %d",a[i].fabricatie.anul);
}
return 0;
}
最佳答案
您必须这样做:
fwrite(&(a[i]),sizeof(AUTOMOBIL),1,f);
或者,您可以在循环外执行此操作:
fwrite(a,sizeof(AUTOMOBIL),n,f);
也不要忘记关闭。
关于c - Fwrite无法正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35044227/