(c语言,不是c++)成绩管理系统记录读取是成功的,但是显示是有问题的

问题就是标题描述的这样,找bug找了大半天但是我觉得自己写的代码应该是没问题的QAQ,给大家看一下图片

img

img

文件读取和显示的代码给各位看一下
文件读取:
void init(Student slist[],int *Scount,Course clist[],int *Ccount,Select sclist[],int *SCcount)
{
FILE *fp1;
int i=0;
char file1[20];
printf("请输入学生信息表文件名:\n");
gets(file1);
fp1=fopen(file1,"r");
while(fp1==NULL)
{
printf("该文件不存在,请重新输入!\n");
gets(file1);
fp1=fopen(file1,"r");
}
while(!feof(fp1))
fscanf(fp1,"这里是三个%s%d",slist[i].xh,slist[i].xm,slist[i].xb,&slist[i++].nl);
*Scount=i;
printf("文件读取成功!已读取%d条记录!\n请输入课程信息表文件名:\n",*Scount);
system("pause");
}
信息显示:
void disp_stud(Student slist[],int scount)//显示学生信息
{
int i;
fflush(stdout);
printf("序号 学号 姓名 性别 年龄\n");
for(i=0;i<scount;i++)
printf("%d\t%s %s \t%s \t%d\n",i+1,slist[i].xh,slist[i].xm,slist[i].xb,slist[i].nl);
system("pause");
}

然后这个是slist对应的信息表
02990227 肖阳 女 19
03183102 朱珠 女 20
05165120 倪不同 男 23
07171228 孙强昇 男 18
08190101 赵刚 男 19
08201109 李小红 女 18
09182217 钱路 男 20
09192115 王山河 男 17
16180406 毕乘风 女 21

你输出的跟这个信息表不一样,年龄都往后移了,是不排序的时候丢失信息啥的