#include<stdio.h> int i,j; typedef struct student { int num; char name[20]; int score[3]; float avg; } student; void readdate(student stu[]) { FILE* fp=fopen("stud.txt", "r"); if(fp==NULL) { printf("read stud file error!"); } for(i=0;i<5;i++) { fscanf(fp, "%d %s %d %d %d %f", &stu[i].num,stu[i].name,&stu[i].score[1], &stu[i].score[2], &stu[i].avg); } fclose(fp); } void sort(student stu[]) { student tmp; int size=sizeof(tmp); for(i=0;i<5;i++) for(j=i+1;j<5;j++) { if(stu[i].avg>stu[j].avg) { memcpy(&tmp, &stu[i],size); memcpy(&stu[i], &stu[j],size); memcpy(&stu[j], &tmp,size); } } printf("排完序的结果为:\n"); for(i=0;i<5;i++) { printf("%d %s %d %d %d %f\n",stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].avg); } } void writedate(student* stu) { FILE* fp=fopen("stu_ sort.text","w"); if(fp==NULL) { printf("write file error!"); } for(i=0;i<5;i++) { fprintf(fp,"%d %s %d %d %d %f\n",stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].avg); } fclose(fp); } int main() { student stu[5]; readdate(stu); sort(stu); writedate(stu); return 0; }修改成能运行的
时间: 2023-12-11 14:03:55 浏览: 65
#include<stdio.h>
#include<string.h> //需要包含string.h头文件以使用memcpy函数
typedef struct student {
int num;
char name[20];
int score[3];
float avg;
} student;
void readdate(student stu[]) {
FILE* fp=fopen("stud.txt", "r");
if(fp==NULL)
{
printf("read stud file error!");
return; //若文件打开失败,则直接返回
}
for(int i=0;i<5;i++)
{
fscanf(fp, "%d %s %d %d %d %f", &stu[i].num,stu[i].name,&stu[i].score[0], &stu[i].score[1], &stu[i].score[2], &stu[i].avg);
}
fclose(fp);
}
void sort(student stu[]) {
student tmp;
int size=sizeof(tmp);
for(int i=0;i<5;i++)
for(int j=i+1;j<5;j++)
{
if(stu[i].avg>stu[j].avg)
{
memcpy(&tmp, &stu[i],size);
memcpy(&stu[i], &stu[j],size);
memcpy(&stu[j], &tmp,size);
}
}
printf("排完序的结果为:\n");
for(int i=0;i<5;i++)
{
printf("%d %s %d %d %d %f\n",stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].avg);
}
}
void writedate(student* stu) {
FILE* fp=fopen("stu_sort.txt","w");
if(fp==NULL)
{
printf("write file error!");
return; //若文件打开失败,则直接返回
}
for(int i=0;i<5;i++)
{
fprintf(fp,"%d %s %d %d %d %f\n",stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].avg);
}
fclose(fp);
}
int main() {
student stu[5];
readdate(stu);
sort(stu);
writedate(stu);
return 0;
}
阅读全文