【C语言】学生成绩结构体录入一直显示 printf("file write error!\n");

代码如下,_if(fwrite(&stu[i],sizeof(struct Student),1,fp)!=1)_这句代码有什么问题吗?


#include<stdio.h>
#include<stdlib.h>
#define SIZE 3
#define LOCALFILE "X:\\c\\test3.txt"
struct Student
{
    char name[10];
    int num;
    int age;
    char addr[15];
}stu[SIZE];

void save()
{
    FILE *fp;
    int i;
    if((fp=fopen(LOCALFILE,"w"))==NULL)
    {
        printf("can not open file.\n");
        exit(0);
    }
    for(i=0;i<SIZE;i++)
    {
        if(fwrite(&stu[i],sizeof(struct Student),1,fp)!=1)//地址,单个字节大小,字节数,文件指针,读取成功返回1
            printf("file write error!\n");
        fclose(fp);
    }

}
int main()
{
    int i;
    printf("Please enter data of students:\n");
    for(i=0;i<SIZE;i++)
    {
        scanf("%s%d%d%s",stu[i].name,&stu[i].num,&stu[i].age,stu[i].addr);
    }
    save();
    return 0;
}

save()函数里,fclose(fp);这句不能放在for(){}循环里,写入一个信息就关闭文件了,剩下2个信息写入时报错,修改如下,供参考:

void save()
{
    FILE *fp;
    int i;
    if((fp=fopen(LOCALFILE,"w"))==NULL)
    {
        printf("can not open file.\n");
        exit(0);
    }
    for(i=0;i<SIZE;i++)
    {
        if(fwrite(&stu[i],sizeof(struct Student),1,fp)!=1)//地址,单个字节大小,字节数,文件指针,读取成功返回1
            printf("file write error!\n");
    }
    fclose(fp);
}

fwrite返回的是写入成功的字节数,应该判断==0