/*
读取文件内容
*/
#include <stdio.h>
#include <stdlib.h> #define N 30 typedef struct date_order { int year; int month; int day; }DATE; typedef struct student { long studentID; char studentName[10]; char studentSex; DATE birthday; int score[4]; float aver; }STUDENT; int ReadfromFile(STUDENT stu[],int m) { FILE *fp; int i,j; if((fp = fopen("score.txt","r")) == NULL) { printf("Fialure to open score.txt!\n"); exit(0); } for(i = 0;!feof(fp);i++) { fscanf(fp,"ld",&stu[i].studentID); fscanf(fp,"%8s",stu[i].studentName); fscanf(fp," %c",&stu[i].studentSex); fscanf(fp,"m/-/-",&stu[i].birthday.year, &stu[i].birthday.month, &stu[i].birthday.day); for(j=0;j<m;j++) { fscanf(fp,"M",&stu[i].score[j]); } fscanf(fp,"%f",&stu[i].aver); } fclose(fp); printf("Total student is %d.\n",i-1); return i-1; } void PrintScore(STUDENT stu[],int n,int m) { int i,j; for(i=0;i<n;i++) { printf("ld %8s < m /d /d", stu[i].studentID,stu[i].studentName,stu[i].studentSex, stu[i].birthday.year,stu[i].birthday.month,stu[i].birthday.day); for(j = 0;j<m;j++) { printf("M",stu[i].score[j]); } printf("%6.1f\n",stu[i].aver); } } int main() { STUDENT stu[N]; int n; n = ReadfromFile(stu,4); PrintScore(stu,n,4); return 0; }