C语言读文本并排序

betball贝博app C语言 558 次浏览 , , , 没有评论

读了文本以后用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]

发表评论

邮箱地址不会被公开。

Go