文件写入-结构体排序

/* 三、编写一个程序,实现以下功能: (1)将5个学生的信息(包括学号、姓名、成绩三项信息)写入到file1中。 (2)从file1中读出5个学生的信息,按成绩自高到低排序,排序后的结果写入到文件file2中。 */ #include <stdio.h> #include <stdlib.h> #include <string.h>
#define N 5 typedef struct student { int num; char name[8]; float socre; }Student; //写入成绩而且返回stu值
void write(char *file,FILE *fp,Student *stu) { if((fp=fopen(file,"w"))==NULL) { printf("文件建立失败"); return; } for(int i=0;i<N;i++) { fprintf(fp,"%d %s %.2f\n",stu[i].num,stu[i].name,stu[i].socre); } fclose(fp); } //排序准备写入文件2的数据
Student *sort(Student *stu2) { Student tmp;//结构体临时变量,不要定义为*tmp会报错!!! //冒泡排序
    for(int i=0;i<N-1;i++) { for(int j=0;j<N-i-1;j++) { if(stu2[j].socre<stu2[j+1].socre) { tmp = stu2[j]; stu2[j] = stu2[j+1]; stu2[j+1]= tmp ; } } } } int main() { FILE *fp; char *file1="D:\\test1.txt",*file2="D:\\test2.txt"; //准备成绩
 Student stu[N]; printf("请输入五位个学生的学号/姓名/成绩(格式为xxxxx xx xx):\n"); for(int i=0;i<N;i++) { scanf("%d %s %f",&stu[i].num,stu[i].name,&stu[i].socre); getchar(); } //写入text1
 write(file1,fp,stu); //排序成绩
    Student *stu2; stu2 = sort(stu); //写入text2
 write(file2,fp,stu); system("pause"); }
相关文章
相关标签/搜索