标题:请问这个程序为什么不能显示最后一行数据
只看楼主
千里之外W
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2013-8-10
结帖率:50%
已结贴  问题点数:4 回复次数:1 
请问这个程序为什么不能显示最后一行数据
#include<stdio.h>

struct student
{
char num[11],name[9];
int normal,exam,total;
};

void show(char *filename)
{
FILE *fp;
int total;
student x;
fp=fopen(filename,"r");
fscanf(fp,"%s%s%d%d",x.num,x.name,&(x.normal),&(x.exam));
while(!feof(fp))
{
total=(int)(x.normal*0.3+x.exam*0.7);
printf("%-12s%-10s%-4d%-4d%-4d\n",x.num,x.name,x.normal,x.exam,total);
fscanf(fp,"%s%s%d%d",x.num,x.name,&(x.normal),&(x.exam));
}
fclose(fp);
}


int main()
{
show("student.txt");
    return 0;
}
搜索更多相关主题的帖子: include normal 
2014-03-10 18:40
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:4 
你知不知道feof是什么作用?它只表示是否曾意图越过尾部读取数据
如果 !feof 不表示其后的数据就可读;如果 !feof 不表示其之前的读操作就失败(你犯的就是这个错)
feof一般是用来诊断错误原因的。

fscanf(fp,"%s%s%d%d",x.num,x.name,&(x.normal),&(x.exam)); 是否执行成功应该看其返回值是否等于4
2014-03-11 08:39



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-428282-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.093776 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved