首先打开文件并存入信息;
#include <stdio.h>
#define NUM 5
typedef struct student{
char name[100];
char sex;
float score;
}stu;
int main(){
FILE *fp = NULL;
if((NULL == (fp = fopen("stu_data", "w")))){
perror("fopen");return -1;
}
stu s[NUM]; //结构体数组
printf("请输入成员的信息( 姓名 性别 分数 ) > \n");
for(int i = 0; i < NUM; i++){
scanf("%s %c %f", s[i].name, &s[i].sex, &s[i].score);
getchar();//清空垃圾字符;
}
fwrite(s, sizeof(stu), sizeof(s)/sizeof(stu), fp);
for(int i = 0; i < NUM; i++){
printf("%s %c %.2f\n", s[i].name, s[i].sex, s[i].score);
}
fclose(fp);
return 0;
}
读取数据并做排序;
#include <stdio.h>
#define NUM 5
typedef struct student{
char name[100];
char sex;
float score;
}stu;
int main(){
FILE *fp = NULL;
if((NULL == (fp = fopen("stu_data", "r")))){
perror("fopen");return -1;
}
stu s[NUM]; //结构体数组
//从文件中读取数据
fread(s, sizeof(stu), sizeof(s)/sizeof(stu), fp);
stu temp;
for(int i = 0; i < NUM; i++){
for(int j = 0; j < NUM-1; j++){
//两种方法都可以
#if 0
// if(s[j].score < s[i].score){
// temp = s[i];
// s[i] = s[j];
// s[j] = temp;
// }
#endif
#if 1
if(s[j].score < s[j+1].score)
{
temp = s[j];
s[j] = s[j+1];
s[j+1]= temp ;
}
#endif
}
}
for(int i = 0; i < NUM; i++){
printf("%s %c %.2f\n", s[i].name, s[i].sex, s[i].score);
}
fclose(fp);
return 0;
}
标签:fp,score,int,程序,stu,由高到,NUM,sizeof,data
From: https://blog.csdn.net/Z102704/article/details/139921173