fscanf问题

appleyk 2011-06-01 10:27:22
stuin.txt数据如下:
…………
…………
1096 stuname96 13
1097 stuname97 81
1098 stuname98 80
1099 stuname99 11
1100 stuname100 87

代码如下:
#include "stdafx.h"
#include "stdio.h"
#include "stdlib.h"
#define Line 100
#define Len 12

struct student
{int Ssno;char Sname[Len];int Sscore;}stud[Line];

int main()
{
FILE*in,*out;//定义两个文件流指针,分别是读取和写入功能;
int max_score=0, Low_score=0,High_score=0,Equal_score=0,score_you=0,score_liang=0,score_zhong=0;
int score_pass=0,score_fali=0,sum=0;
double score_avg,p1,p2,p3,p4,p5;
char out_file[50];

in=fopen("stuin.txt","r");
printf("First.检查下stuin.txt是否在程序的根目录下\n");
if(in==NULL)
{
printf("stuin.txt不存在,请检查该文件的正确位置,将其置于程序的根目录下!");
exit(0);

}

printf("\n\nSecond.请输入要保存最终分析结果的文件,比如:stuout.txt");
scanf("%s",out_file);
if((out=fopen(out_file,"w"))==NULL)
{
printf("文件无法打开");exit(0);
}

for(int i=0;i<Line;i++)
{
fscanf(in,"%d %s %d",&stud->Ssno,&stud->Sname,&stud->Sscore);
sum+=stud->Sscore;
if(stud->Sscore>max_score)
max_score=stud->Sscore;

}fclose(in);

fputs("*****First.成绩最高的学生信息如下:******\n",out);
printf("\n*****A.成绩最高的学生信息如下:******\n");
printf("\t最高成绩为:%d\n",max_score);

for(int i=0;i<Line;i++)
{
if(stud->Sscore==max_score)

printf("%d %s %d\n",stud->Ssno,stud->Sname,stud->Sscore);
else
printf("%d %s %d\n",stud->Ssno,stud->Sname,stud->Sscore);


}

运行结果为什么会是:
1100 stuname100 87
1100 stuname100 87
1100 stuname100 87
1100 stuname100 87
1100 stuname100 87
1100 stuname100 87
1100 stuname100 87
1100 stuname100 87
1100 stuname100 87
1100 stuname100 87
1100 stuname100 87
1100 stuname100 87
……………………



为什么会这样?
...全文
120 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
北岛 2011-06-01
  • 打赏
  • 举报
回复
路过,打酱油,先自己思考!这样自己会理解的更深!
appleyk 2011-06-01
  • 打赏
  • 举报
回复
ok了..Mark

不擅长用指针形式,还是stud[i].Ssno 舒服些

谢了

如此美丽的你 2011-06-01
  • 打赏
  • 举报
回复
fscanf往stud[i]中写数据。。。
for(int i=0;i<Line;i++)
{
fscanf(in,"%d %s %d",&stud[i]->Ssno,&stud[i]->Sname,&stud[i]->Sscore);//这里!!!
sum+=stud[i]->Sscore;
if(stud->Sscore>max_score)
max_score=stud->Sscore;

}
fclose(in);
appleyk 2011-06-01
  • 打赏
  • 举报
回复
数据都没有问题 我感觉 fscanf只把最后一行数据读取到了结构体stud数组中
stud[0].Sscore=87,但是stud[1].Sscore=0

ryfdizuo 2011-06-01
  • 打赏
  • 举报
回复
for(int i=0;i<Line;i++)
{
fscanf(in,"%d %s %d",&stud->Ssno,&stud->Sname,&stud->Sscore);
sum+=stud->Sscore;
if(stud->Sscore>max_score)
max_score=stud->Sscore;

}fclose(in);
===========
fscanf往stud[i]中写数据。。。
for(int i=0;i<Line;i++)
{
fscanf(in,"%d %s %d",&stud[i]->Ssno,&stud[i]->Sname,&stud[i]->Sscore);
sum+=stud[i]->Sscore;
if(stud->Sscore>max_score)
max_score=stud->Sscore;

}fclose(in);
bdmh 2011-06-01
  • 打赏
  • 举报
回复
调试啊,样本数据就你自己有,这么明显的问题,自己不解决问谁
CrackValue 2011-06-01
  • 打赏
  • 举报
回复
if(stud->Sscore==max_score)

printf("%d %s %d\n",stud->Ssno,stud->Sname,stud->Sscore);
else
printf("%d %s %d\n",stud->Ssno,stud->Sname,stud->Sscore);
这个if else 好像没区别嘛

69,378

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧