#include<stdio.h>
#include<stdlib.h>
struct STU{
int num;
char name[10];
int score1;
int score2;
int score3;
};
void scan(struct STU *p)
{ int i;
printf("请依次输入学生的学号姓名以及三门课的成绩\n");
for(i=0;i<4;i++)
{printf("第%d位:",i+1);
scanf("%d%s%d%d%d",&p[i].num,p[i].name,&p[i].score1,&p[i].score2,&p[i].score3);}
}
void fun(struct STU *p)
{
float x,avar[4];
int j,i;
struct STU t;
for(i=0;i<4;i++)
avar[i]=((float)p[i].score1+(float)p[i].score2+(float)p[i].score3)/3;
for(i=0;i<3;i++)
for(j=0;j<3-i;j++)
if(avar[j]<avar[j+1])
{ t=p[j];p[j]=p[j+1];p[j+1]=t;
x=avar[j];avar[j]=avar[j+1];avar[j+1]=x;
}
printf("功能运行后\n");
for(i=0;i<4;i++)
printf("学号为:%d 姓名为:%s 成绩一:%d 成绩二:%d 成绩三:%d 平均分:%f\n",p[i].num,p[i].name,p[i].score1,p[i].score2,p[i].score3,avar[i]);
}
void main()
{
FILE *fp;
STU a[4],b[4];
scan(a);
fun(a);
fp=fopen("result.txt","wb");
if(fp==NULL)
{ printf("cannot open this file");
exit(0);
}
int i;
for(i=0;i<4;i++)
{
fwrite(&a[i],sizeof(struct STU),1,fp);}
for(i=0;i<4;i++)
fread(&b[i],sizeof(struct STU),1,fp);
for(i=0;i<4;i++)
printf("学号为:%d 姓名为:%s 成绩一:%d 成绩二:%d 成绩三:%d \n",b[i].num,b[i].name,b[i].score1,b[i].score2,b[i].score3);
fclose(fp);
}
在 result.txt文件里 除了姓名 其余的数字全是一些乱码和“烫烫” 以及"屯屯"
求求大神吗 能告诉萌新小白这是为什么吗
fopen用的wb参数表示以二进制形式写入,你要写文本那就用w