#include<stdio.h> #include<stdlib.h> #include<string.h> #define ALL 2 //All of the students number struct person { char na[10]; int number; int NO; int class1; int class2; int class3; int class4; float average; int total; }Person[ALL]; int Read() { FILE *fp; char s[500], *p,*q,*r; int i=0, n; fp=fopen("md.txt","r"); while (!feof(fp)) { if(!fgets(s, 500, fp)) break; p=s; q=strstr(p,":"); p=q+1; r=strstr(p,"/n"); n=r-p; strncpy(Person[i].na, p, n); i++; } fclose(fp); fgets(s, 500, fp); for(i=0;i<ALL;i++) { if((fp=fopen("cj.txt","r"))==NULL) return 0; if(i<2) fseek (fp,46*(i+1)+4,1); if(i==2) fseek(fp,46*(i+1)+8,1); if((i>2)&&(i<4)) fseek(fp,46*(i+1)+10,1); if(i==4) fseek(fp,46*(i+1)+12,1); //数字的读入位置控制 fscanf(fp,"%2d %12d %8d %8d %8d %8d",&(Person[i].NO),&(Person[i].number),&(Person[i].class1),&(Person[i].class2),&(Person[i].class3),&(Person[i].class4)); } fclose(fp); return 0; } void show() //show all the students' name { int i; printf("NO. name number class1 class2 class3 class4 total average/n"); for(i=0;i<ALL;i++) { printf("%2d",i+1); printf("%10s",Person[i].na); printf("%12d",Person[i].number); printf("%9d",Person[i].class1); printf("%9d",Person[i].class2); printf("%9d",Person[i].class3); printf("%9d",Person[i].class4); printf("%9d",Person[i].total); printf(" %.2f/n",Person[i].average); } } void count() { int i; for(i=0;i<ALL;i++) { Person[i].total=Person[i].class1+Person[i].class2+Person[i].class3+Person[i].class4; Person[i].average=(Person[i].total)/4.0; } } void save() { FILE *fp; int i; fp=fopen("cjd.txt","w"); fprintf(fp,"NO. name number class1 class2 class3 class4 total average/n"); for(i=0;i<ALL;i++) { fprintf(fp,"%2d",i+1); fprintf(fp,"%10s",Person[i].na); fprintf(fp,"%12d",Person[i].number); fprintf(fp,"%9d",Person[i].class1); fprintf(fp,"%9d",Person[i].class2); fprintf(fp,"%9d",Person[i].class3); fprintf(fp,"%9d",Person[i].class4); fprintf(fp,"%9d",Person[i].total); fprintf(fp," %.2f/n",Person[i].average); } fclose(fp); printf("Save the file success./n"); } int main() { Read(); count(); show(); save(); return 0; }