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
……………………
为什么会这样?