文件寫入-結構體排序

/* 三、編寫一個程序,實現以下功能: (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"); }
相關文章
相關標籤/搜索