#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);
}
}
修改如下,改动处见注释,供参考:
#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()