fwrite()和fread()结构数组在C中的文件中不写入任何内容
我很难将数据输入到文件中,每当我将数据输入到struct array,然后将其保存到文本文件中时,fwrite()都不会向文件中打印任何内容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];
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谢谢您抽出时间来帮助我,我尝试了不同的方法将数据保存到文件中。成功了!