主要使用fseek函数和fread函数
fseek函数可以使文件指针遍历学生信息,当遍历到指定的学生信息后使用fread函数读取学生信息
学生信息查找算法:
打开student.txt——输入学生序号——将文件指针移到与序号对应的学生上——读取学生信息——打印学生信息——关闭文件
待测试的学生信息:
程序代码:
#include <stdio.h> #include <stdlib.h> struct Student//学生成绩结构 { char Name[10];//姓名 int Age;//年龄 int No;//学号 float Chinese;//语文成绩 float Math;//数学成绩 float English;//英语成绩 float Total;//总成绩 float Ave;//平均成绩 }; void main() { FILE *fp; int i; fp = fopen("D:\\student.txt","r"); if(NULL == fp) { printf("文件打开失败!\n"); } else { printf("文件打开成功!\n"); //文件指针偏移 fseek(fp,0L,SEEK_END); //文件的大小 int size = ftell(fp); //将文件指针重新移到开始位置 rewind(fp); //学生的人数 int len = size / sizeof(struct Student); printf("请输入学生的序号:"); scanf("%d",&i); //动态内存分配 struct Student *st = (struct Student*)malloc(sizeof(struct Student) * len); //将文件指针移到选定的序号与之所对的学生上 fseek(fp,(i-1)*sizeof(struct Student),SEEK_SET); //读取与序号相对应的学生的信息 fread(&st[i-1],sizeof(struct Student),1,fp); //打印学生的信息 printf("%s %d %d %g %g %g %g %g\n",st[i-1].Name, st[i-1].Age, st[i-1].No, st[i-1].Chinese, st[i-1].Math, st[i-1].English, st[i-1].Total, st[i-1].Ave); fclose(fp); } system("pause"); }
执行结果:
当输入1时:
当输入2时:
原文:http://blog.csdn.net/u010105970/article/details/23764845