#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define N 2
struct STU {
int id;
char name[20];
char sex;
int score;
};
void show_stu(struct STU *s, int n)
{
int i;
for (i = 0; i < n; i++)
printf("%d\t%s\t%c\t%d\n", s[i].id, s[i].name, s[i].sex, s[i].score);
}
void write_stu(struct STU *s, int n, FILE *fp)
{
//fwrite
int i;
for (i = 0; i < n; i++)
fwrite(&s[i], sizeof(*s), 1, fp);
}
struct STU *read_stu(FILE *fp, int *n)
{
int i, res, m = 10;
struct STU *s = (struct STU *)malloc(sizeof(struct STU) * m);
for (i = 0; ; i++) {
if (i == m) {
m *= 2;
s = realloc(s, sizeof(struct STU) * m);
}
if (!fread(&s[i], sizeof(struct STU), 1, fp))
break;
}
*n = i;
return s;
}
void sort_stu(struct STU *s, int n)
{
int i, j;
struct STU tmp;
for (i = 0; i < n-1; i++)
for (j = 1; j < n-i; j++)
if (s[j-1].score < s[j].score) {
tmp = s[j-1];
s[j-1] = s[j];
s[j] = tmp;
}
}
int main(void)
{
struct STU *student;
FILE *fp, *fp_sort;
int n = 0;
fp = fopen("stu.txt", "r");
if (!fp) {
printf("fopen stu.txt err\n");
return 1;
}
fp_sort = fopen("stu_sort.txt", "w");
if (!fp_sort) {
printf("fopen stu_sort.txt err\n");
return 1;
}
student = read_stu(fp, &n);
//show_stu(student, n);
sort_stu(student, n);
//printf("******\n");
show_stu(student, n);
write_stu(student ,n, fp_sort);
free(student);
fclose(fp);
fclose(fp_sort);
return 0;
}
录入学生信息排序fwrite fread 冒泡
最新推荐文章于 2021-04-22 20:02:13 发布