1101 ZhouPing 85
1102 FangMin 70
1103 ShiWen 90
1104 PanJiaJun 60
1105 ZhangZhang 89
1106 LiKe 92
1107 ChiYuan 88
1108 QiZheYu 78
1109 WangXin 67
1110 LiuMing 65
编写程序,在保存学生成绩的文本文件"student.txt"中查找指定学号的学生姓名和成绩。"student.txt"中的数据存放格式是每行对应一个学生的信息,包含学号(整型)、姓名(字符串,最长20位)和成绩(整型)3项。每个数据之间有一个空格,最后一行没有换行符。
输入:
一个整数,表示要查找的学生的学号。
输出:
有两行。第一行是一个字符串,表示查找到的学生的姓名;第二行是一个整数,表示查找到的学生的成绩。
输入样例:
1101
输出样例:
Name:ZhouPing
Score:85
【程序】
#include<stdio.h>
#include<stdlib.h>
void main()
{ char buffer[40]; //实际上字符串最长为30字符
FILE *fp;
int nNumber,x;
char strName[21];
int nScore;
scanf("%d",&x);
fp=fopen("student.txt","r");
while ( !feof(fp) )
{ fgets(buffer,40,fp);
sscanf(buffer,"%d %s %d",&nNumber,strName,&nScore);
if ( nNumber==x )
{ printf("Name:%s\nScore:%d\n",strName,nScore);
break;
}
}
fclose(fp);
}
【运行结果】
1101
Name:ZhouPing
Score:85
【再次运行】
1105
Name:ZhangZhang
Score:89
#include<stdio.h>
#include<stdlib.h>
void main()
{ char buffer[40]; //实际上字符串最长为30字符
FILE *fp;
int nNumber,x;
char strName[21];
int nScore;
scanf("%d",&x);
fp=fopen("student.txt","r");
while ( !feof(fp) )
{ fgets(buffer,40,fp);
sscanf(buffer,"%d %s %d",&nNumber,strName,&nScore);
if ( nNumber==x )
{ printf("Name:%s\nScore:%d\n",strName,nScore);
break;
}
}
fclose(fp);
}
【运行结果】
1101
Name:ZhouPing
Score:85
【再次运行】
1105
Name:ZhangZhang
Score:89
温馨提示:答案为网友推荐,仅供参考
第1个回答 2013-05-31
利用fscanf("%d%s%d",&Num,&Name,&Score);可以做成一个结构体。
然后利用while(!feof(文件指针)) 一直读取,然后用读出的学号与输入的学号比较,相等技术处后面的姓名和分数
然后利用while(!feof(文件指针)) 一直读取,然后用读出的学号与输入的学号比较,相等技术处后面的姓名和分数