从文件获得学生信息,计算每名学生的平均成绩及名次。将结果保存到到文件
为什么我感觉我没有成功读入数据,哪里出了问题?顺便提示一些后面怎么排序呢?#include<stdio.h>
#include<stdlib.h>
struct student
{
int number;
char name;
double score;
};
int main()
{
struct student stu; int i,j; double ave;
FILE *fp1, *fp2;
if( (fp1=fopen("student1.txt","r"))==NULL){
printf("The file cannot open");
exit(0);
}
for(i=0;i<10;i++){
fread(stu,sizeof(struct student),1,fp1);
}
rewind(fp1);
for(i=0;i<10;i++){
for(j=0;j<3;j++){
ave=ave+stu.score;
}
}
fclose(fp1);
return 0;
}
鱼币 鱼币 永恒的蓝色梦想 发表于 2020-5-29 21:53
鱼币
?为了骗鱼币这么不择手段吗 你的程序没有输出,你怎么知道,自己执行的对还是错?
Line 18:
要么没有循环, 改成 fread(stu,sizeof(struct student),10,fp1);
要么有循环,改成 fread(&stu,sizeof(struct student),1,fp1);
Line 23:
使用了未初始化的 ave
赚小钱 发表于 2020-5-29 22:03
你的程序没有输出,你怎么知道,自己执行的对还是错?
Line 18:
不知道为什么输出全是0,还夹杂一些很大的数字 你的strl键没了 发表于 2020-5-29 22:27
不知道为什么输出全是0,还夹杂一些很大的数字
全是0,我推测是,你读取数据 stu 没有偏移,一直在写入首地址,数组后面的元素没有写入数据。
很大的数字是因为 ave 数组没有初始化。
可以试着按我说的方案,修改一下。自己改 bug 收获最大。 赚小钱 发表于 2020-5-29 22:46
全是0,我推测是,你读取数据 stu 没有偏移,一直在写入首地址,数组后面的元素没有写入数据。
很大的数 ...
行,我自己修改一下,谢谢
页:
[1]