fwrite()和fread()结构数组在C中的文件中不写入任何内容

fwrite()和fread()结构数组在C中的文件中不写入任何内容,c,C,我很难将数据输入到文件中,每当我将数据输入到struct array,然后将其保存到文本文件中时,fwrite()都不会向文件中打印任何内容 int last; struct Person{ int pid; char lname[MAXchar], fname[MAXchar], mname[MAXchar]; int age; char subject[MAXchar]; float grade; }; struct Person Num[MAX];

我很难将数据输入到文件中,每当我将数据输入到struct array,然后将其保存到文本文件中时,fwrite()都不会向文件中打印任何内容

int last;
struct Person{
    int pid;
    char lname[MAXchar], fname[MAXchar], mname[MAXchar];
    int age;
    char subject[MAXchar];
    float grade;
};
struct Person Num[MAX];
struct Person *No;

这就是我保存到文本文件的方式

void saveDATA(){
    FILE *fp;
    fp=fopen("database.txt","ab");

    fwrite(No, sizeof(struct Person), 1, fp);

    if(fwrite != 0)
        printf("Success!\n");
    else
        printf("error!\n");

    fclose(fp);
}
虽然程序说它会返回,但fwrite不会在文本文件中打印任何数据

这就是我加载数据以将其返回到struct数组的方式,但它不起作用

void loadDATA(){
    FILE *fp;
    char line[500];
    fp=fopen("database.dbf","rb+");
    if(fp == NULL){
        fp = fopen("database.dbf", "wb");
    }
    while (fgets(line, sizeof(line), fp)){
        last++;
        fscanf(line,"%d %s %s %s %d %s %2.f", &array[last].pid, array[last].lname, array[last].fname,array[last].mname, &array[last].age, array[last].subject, &array[last].grade);
        insert(array.tempID, array.L, array.F, array.M, array.TempAge, array.Sub, array.Tempgrade);

    }
    fclose(fp);
}

如果(fwrite!=0)
在此行中,fwrite始终不是0。它是指向将函数写入程序的指针。为了得到结果,您可以使用
i=fwrite(No,[…])
,如果(i)您使用的fwrite调用将只写入结构的一个元素。如果要编写结构的所有元素,必须使用
fwrite(No,sizeof(struct Person),MAX,fp)
main函数在哪里?另外,不能使用
fgets
函数读取二进制数据。您必须使用
fread
功能。@SirJoBlack谢谢您抽出时间来帮助我,我尝试了不同的方法将数据保存到文件中。成功了!