困难大学生信息管理系统


#include 
#include 
struct Student{
        int num;
        char name[10];
        float money;
    }stu[3];
int main(){
    void save();
    save();
    return 0;
}
void save(){
    int i;
    float aver,sum;
    for(i=0;i<3;i++)
    scanf("%d %s %f",&stu[i].num,stu[i].name,&stu[i].money);
    for(i=0;i<3;i++)
    sum+=stu[i].money;
    aver=sum/3;
        FILE *fp;
    if((fp=fopen("std.dat","wb"))==NULL)
    {
        printf("cannot open file\n");
        exit(0);    
    }
    for(i=0;i<3;i++)
    {
        if(fwrite(&stu[i],sizeof(struct Student),1,fp)!=1)
        printf("file write error\n");
        fclose(fp);
     } 
}

img


为什么显示错误?

img


数据也没有录入完整
怎么修改一下

修改如下,改动处见注释,供参考:

#include <stdio.h>
#include <stdlib.h>
struct Student{
        int num;
        char name[10];
        float money;
}stu[3];
int main(){
    void save();
    save();
    system("pause");
    return 0;
}
void save(){
    int i;
    float aver,sum;
    for(i=0;i<3;i++)
        scanf("%d %s %f",&stu[i].num,stu[i].name,&stu[i].money);
    sum = 0;  // 修改 统计前 sum 需要初始化
    for(i=0;i<3;i++)
        sum+=stu[i].money;
    aver=sum/3;
    FILE *fp;
    if((fp=fopen("std.dat","wb"))==NULL)
    {
        printf("cannot open file\n");
        exit(0);
    }
    for(i=0;i<3;i++)
    {
        if(fwrite(&stu[i],sizeof(struct Student),1,fp)!=1)
            printf("file write error\n");
        //fclose(fp); 修改 写入一次,就关闭文件了。
    }
    fclose(fp);
}

是utf-8和ANSI的问题,把fwrite() 换成 fputs()