解决了谢谢
void B(){
int i,j,temp;//计算总分
FILE *fp;
fp=fopen("average.dat","a+");
copy_file("input.dat","average.dat");
fclose(fp);
fp=fopen("average.dat","r");
int c = 0;
while(!feof(fp)){//文件结束返回1,没结束返回零
fscanf(fp,"%s %s %d %d %d %d %d %lf\n",&stu[c].id,&stu[c].name,&stu[c].chinese,&stu[c].math,&stu[c].english,&stu[c].sum,&stu[c].rank,&stu[c].aver);
stu[c].sum= stu[c].chinese + stu[c].math + stu[c].english;
stu[c].aver=(double)stu[c].sum/3.00;
c++;
}
fclose(fp);
for(i=0;i
temp=1;
for(j=0;j
if(stu[j].sum > stu[j+1].sum){
temp++;
}
}
stu[i].rank=temp;
}
fp=fopen("input.dat","w");//显示
printf("学号\t姓名\t语文\t数学\t英语\t总分\t名次\t平均分\n");
i=0;
while(!feof(fp)){
fscanf(fp,"%s %s %d %d %d %d %d %lf\n",stu[i].id,stu[i].name,stu[i].chinese,stu[i].math,stu[i].english,stu[i].sum,stu[i].rank,stu[i].aver);
printf("%s\t%s\t%d\t%d\t%d\t%d\t%d %lf\n",stu[i].id,stu[i].name,stu[i].chinese,stu[i].math,stu[i].english,stu[i].sum,stu[i].rank,stu[i].aver);
i++;
}
fclose(fp);
return;
}
改成这样就好了
void B(int count){
int c=0;//计算总分
FILE *fp;
fp=fopen("average.dat","w+");
copy_file("input.dat","average.dat");
//fclose(fp);
//fp=fopen("average.dat","r+");
c = 0;
/* while(!feof(fp)){//文件结束返回1,没结束返回零
c++;
}*/
printf("学号\t姓名\t语文\t数学\t英语\t总分\t名次\t平均分\n");
c=0;
while(!feof(fp)){
fscanf(fp,"%s %s %d %d %d %d %d %lf\n",&stu[c].id,&stu[c].name,&stu[c].chinese,&stu[c].math,&stu[c].english,&stu[c].sum,&stu[c].rank,&stu[c].aver);
printf("%s\t%s\t%d\t%d\t%d\t%d\t%d\t%lf\n",stu[c].id,stu[c].name,stu[c].chinese,stu[c].math,stu[c].english,stu[c].sum,stu[c].rank,stu[c].aver);
c++;
}
fclose(fp);
}