已知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;
}