写了一个按照学号Sno查询的程序,运行的时候都是打出最后一行,哪位大神帮我指正一下,感激不尽。
#include<stdio.h>
#define N 1024
#define RECORDLENGTH 1000
struct Student //定义基本表——Student
{
long long int Sno; //学生学号
char Sname[20]; //学生姓名
char Ssex[6]; //学生性别
int Sage; //学生年龄
char Sdept[20]; //学生所在系
};
int main()
{
FILE *fp;
int n,i,num[N],m;
char buffer[RECORDLENGTH+1];
Student mp;
if( fp=fopen("StudentData.txt","r"))
{
n=0;
while (!feof(fp))
{
fgets(buffer,RECORDLENGTH+1,fp);
sscanf(buffer,"%lld",num+n);
n++;
}
printf("请输入序号:");
scanf("%lld",&m);
for( i=0;i<n;i++)
if ( num[i]==m )
break;
if ( i<n )
{
fseek(fp, (long)i*RECORDLENGTH , (int)fp);
fgets(buffer,RECORDLENGTH+1,fp);
sscanf(buffer,"%lld %s %s %d %s",&mp.Sno,&mp.Sname,&mp.Ssex,&mp.Sage,&mp.Sdept);
printf("学号 姓 名 性别 年龄 所在系\n");
printf("%04lld %8s %4s %4d %4s\n",mp.Sno,mp.Sname,mp.Ssex,mp.Sage,mp.Sdept);
}
else
printf("没有找到序号为%lld的记录。\n",num);
fclose(fp);
}
else
{
printf("无法打开文件读取数据。\n");
//exit();
}
}
一下是StudentBase.txt里面的内容
2014010624 艾伦 男 19 IS
2014010413 郭宁 男 20 EN
2014010908 王凯 男 19 IS
2014021111 刘莉 女 19 EN
2014011536 陈军 男 21 IS
2014021314 赵爽 女 18 CA
2014010715 李宁 女 22 IS
2014010245 乔治 男 21 EN
2014021212 张雪 女 19 IS
2014021629 孙楠 男 23 CA
2014012231 马丁 男 20 CA