读了文本以后用sort函数对动态增加的数组进行排序
[cce_cpp] #include <algorithm> #include <stdio.h> #include <stdlib.h> #include <malloc.h> #include <algorithm> using namespace std; typedef struct student{ char name[10]; char num[10]; int score_eng; int score_ch; int score_math; int score_sci; int score_total; }stu, *pstu; pstu stlist = (pstu)malloc(sizeof(stu)); int num = 0; bool readfile(char * filePath){ FILE *fp = fopen(filePath, "r"); if (!fp){ printf("Can't open file\n"); return false; } while (!feof(fp)){ num++; stlist = (pstu)realloc(stlist, sizeof(struct student)*(num + 1)); //读汉字,文件必须是ANSI编码 fscanf(fp, "%s%s%d%d%d%d", &stlist[num].name, &stlist[num].num, &stlist[num].score_eng, &stlist[num].score_ch, &stlist[num].score_math, &stlist[num].score_sci); stlist[num].score_total = stlist[num].score_eng + stlist[num].score_ch + stlist[num].score_math + stlist[num].score_sci; } } bool px(stu data, stu data2){ return data.score_total > data2.score_total; } int main(){ int i; readfile("c:\student.txt"); sort(stlist+1, stlist + num+1, px); for (i = 1; i <= num; i++){ printf("%s %s %d %d %d %d %d\n", stlist[i].name, stlist[i].num, stlist[i].score_eng, stlist[i].score_ch, stlist[i].score_math, stlist[i].score_sci, stlist[i].score_total); } while (1); // return 0; } [/cce_cpp]