在指定文件中查找指定编号的学生

 1 #include "stdafx.h"
 2 #include <stdlib.h>
 3 #include <stdio.h>
 4 #define N 30
 5 typedef struct date
 6 {
 7     int year;
 8     int month;
 9     int day;
10 }DATE;
11 typedef struct student
12 {
13     long studentID;
14     char studentName[10];
15     char studentsex;
16     DATE birthday;
17     int score[4];
18     float aver;
19 }STUDENT;
20 int SearchNuminFile(char fileName[],long key);
21 int main()
22 {
23     int n;
24     long key;
25     printf_s("Input the searching ID:");
26     scanf_s("%d",&key,sizeof(key));
27     n = SearchNuminFile("student.txt",key);
28     if(n != -1)
29         printf_s("Record number is %d.\n",n);
30     else
31         printf_s("Not found.\n");
32     return 0;
33 }
34 int SearchNuminFile(char fileName[],long key)
35 {
36     FILE *fp;
37     STUDENT stu[N];
38     int i,j;
39     if(fopen_s(&fp,fileName,"r") == NULL)
40     {
41         printf_s("Failure to open %s!\n",fileName);
42         exit(0);
43     }
44     system("pause");
45     for(i = 0;!feof(fp);i++)
46     {
47         fread(&stu[i],sizeof(STUDENT),1,fp);
48         if(key == stu[i].studentID)
49         {
50             printf_s("%10ld%8s%3c%6d/%02d/%02d",stu[i].studentID,
51                 stu[i].studentName,stu[i].studentsex,stu[i].birthday .year,
52                 stu[i].birthday.month,stu[i].birthday.day);
53             for(j = 0;j < 4;j++)
54             {
55                 printf("%4d",stu[i].score[j]);
56             }
57             printf_s("%6.1f\n",stu[i].aver);
58             fclose(fp);
59             return i+1;
60         }
61     }
62     fclose(fp);
63     system("pause");
64     return -1 ;
65 }

 

posted @ 2015-04-18 10:52  码农@163  阅读(286)  评论(0编辑  收藏  举报