Fwrite无法正常工作

Fwrite无法正常工作

很抱歉使用我的母语编写该程序,但是我似乎真的找不到为什么它不起作用。因此,我进行了测试,并且正确读取了数组的所有值,但是当我尝试查看.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/

10-11 15:23