想知道函数哪里出现问题了

解决了谢谢
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);

}

文件的格式和你这里
fscanf(fp,"%s %s %d %d %d %d %d\n",&stu[c].id,&stu[c].name,&stu[c].chinese,&stu[c].math,&stu[c].english,&stu[c].sum,&stu[c].rank);
的格式不一致