已知file1.dat中存储了5名学生信息,从file1.dat中读出学生信息,将学生信息按分数降序排序后写入file2.dat.

已知file1.dat中存储了5名学生信息,从file1.dat中读出学生信息,将学生信息按分数降序排序后写入file2.dat.

学生信息定义如下:

struct stu{

int sno;

char[20] sname;

double score;

}
这个怎么做,帮帮我

1.打开文件filedat1 把数据信息读入结构体数组 关闭文件filedat1
2.结构体数组排序
3.打开文件filedat2 把结构体数据信息写入文件filedat2 关闭文件filedat2

供参考:

#include <stdio.h>
#include <stdlib.h>
#define  N 50
struct stu {
    int  sno;
    char sname[20];
    double score;
};
int main()
{
    int i = 0, j = 0, cnt = 0;
    struct stu s[N], tmp;
    FILE* fp;
    fp = fopen("file1.dat", "r");
    if (fp == NULL) {
        printf("Open file fail!\n");
        return -1;
    }
    while (1) {
        if (fscanf(fp, "%d %s %lf\n", &s[cnt].sno, s[cnt].sname, &s[cnt].score) != 3) break;
        cnt++;
    }
    fclose(fp);
    for (i = 0; i < cnt - 1; i++) {
        for (j = 0; j < cnt - 1 - i; j++) {
            if (s[j].score < s[j + 1].score) {
                tmp = s[j]; s[j] = s[j + 1]; s[j + 1] = tmp;
            }
        }
    }
    fp = fopen("file2.dat", "w");
    if (fp == NULL) {
        printf("Write file fail!\n");
        return -1;
    }
    for (i = 0; i < cnt; i++)
        fprintf(fp, "%d %s %lf\n", s[i].sno, s[i].sname, s[i].score);
    fclose(fp);
    return 0;
}

img