鱼C论坛

 找回密码
 立即注册
查看: 954|回复: 7

[已解决]从文件获得学生信息,计算每名学生的平均成绩及名次。将结果保存到到文件

[复制链接]
发表于 2020-5-29 21:48:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
为什么我感觉我没有成功读入数据,哪里出了问题?顺便提示一些后面怎么排序呢?
#include<stdio.h>
#include<stdlib.h>
struct student
{
        int number;
        char name[4];
        double score[3];
 };
int main()
{
        struct student stu[10]; int i,j; double ave[10];
        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[i]=ave[i]+stu[i].score[j];
                }
        }
        fclose(fp1);
        return 0;
 } 
最佳答案
2020-5-29 22:03:02
你的程序没有输出,你怎么知道,自己执行的对还是错?

Line 18:
要么没有循环, 改成 fread(stu,sizeof(struct student),10,fp1);
要么有循环,改成 fread(&stu[i],sizeof(struct student),1,fp1);

Line 23:
使用了未初始化的 ave
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-29 21:53:03 | 显示全部楼层

回帖奖励 +1 鱼币

鱼币
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-29 21:53:04 | 显示全部楼层

回帖奖励 +1 鱼币

鱼币
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-5-29 21:54:39 | 显示全部楼层

?为了骗鱼币这么不择手段吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-29 22:03:02 | 显示全部楼层    本楼为最佳答案   
你的程序没有输出,你怎么知道,自己执行的对还是错?

Line 18:
要么没有循环, 改成 fread(stu,sizeof(struct student),10,fp1);
要么有循环,改成 fread(&stu[i],sizeof(struct student),1,fp1);

Line 23:
使用了未初始化的 ave
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-29 22:27:23 | 显示全部楼层
赚小钱 发表于 2020-5-29 22:03
你的程序没有输出,你怎么知道,自己执行的对还是错?

Line 18:

不知道为什么输出全是0,还夹杂一些很大的数字
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-29 22:46:46 | 显示全部楼层
你的strl键没了 发表于 2020-5-29 22:27
不知道为什么输出全是0,还夹杂一些很大的数字

全是0,我推测是,你读取数据 stu 没有偏移,一直在写入首地址,数组后面的元素没有写入数据。
很大的数字是因为 ave 数组没有初始化。

可以试着按我说的方案,修改一下。自己改 bug 收获最大。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-30 08:39:11 | 显示全部楼层
赚小钱 发表于 2020-5-29 22:46
全是0,我推测是,你读取数据 stu 没有偏移,一直在写入首地址,数组后面的元素没有写入数据。
很大的数 ...

行,我自己修改一下,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-13 17:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表