一条学生记录包括学号、姓名、成绩。 1 格式化输入多个学生记录 2 用fwrite将学生信息按二进制写入文件 3
3,用fread读取记录并按成绩排序后写回文件。只要c写的,c++不要,有适量注释最好!谢了!!...
3,用fread读取记录并按成绩排序后写回文件。
只要c写的,c++不要,有适量注释最好!谢了!! 展开
只要c写的,c++不要,有适量注释最好!谢了!! 展开
展开全部
#include <stdio.h>
#include <stdlib.h>
#define SIZE 4 //定义学生成员的个数
//定义学生成员结构体
struct student
{
int stu_NO;
char name[15];
int score;
} stu[SIZE];
//排序qsort调用子函数(结构体型元素排序)
int cmp(const void *a,const void *b)
{
return((struct student*)a)->score-((struct student*)b)->score;
}
//用于将学生信息保存到stu_list文件中
void save()
{
FILE *fp;
int i;
if ((fp = fopen("stu_list.txt","wb")) == NULL)
{
printf("Cannot open file\n");
exit(0);
}
for (i=0;i<SIZE;i++)
if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)
printf("File write error\n");
fclose(fp);
}
void main()
{
FILE *fp;
int i;
//用于对学生成员信息统计
for (i=0;i<SIZE;i++)
{
scanf("%d%s%d",&stu[i].stu_NO,stu[i].name,&stu[i].score);
}
//用于将统计后的学生信息保存到stu_list
save();
fp = fopen("stu_list.txt","rb");
for (i=0;i<SIZE;i++)
{
fread(&stu[i],sizeof(struct student),1,fp);
// printf("%d %s %d\n",stu[i].stu_NO,stu[i].name,stu[i].score);
}
qsort((void *)stu,SIZE,sizeof(stu[0]),cmp);
fclose(fp);
//将成绩排序后的学生信息保存到stu_list
save();
//用于检测最后stu_list文件中的信息
fp = fopen("stu_list.txt","rb");
for (i=0;i<SIZE;i++)
{
fread(&stu[i],sizeof(struct student),1,fp);
printf("%d %s %d\n",stu[i].stu_NO,stu[i].name,stu[i].score);
}
fclose(fp);
}
已经编译通过 楼主可以检查一下。。。
#include <stdlib.h>
#define SIZE 4 //定义学生成员的个数
//定义学生成员结构体
struct student
{
int stu_NO;
char name[15];
int score;
} stu[SIZE];
//排序qsort调用子函数(结构体型元素排序)
int cmp(const void *a,const void *b)
{
return((struct student*)a)->score-((struct student*)b)->score;
}
//用于将学生信息保存到stu_list文件中
void save()
{
FILE *fp;
int i;
if ((fp = fopen("stu_list.txt","wb")) == NULL)
{
printf("Cannot open file\n");
exit(0);
}
for (i=0;i<SIZE;i++)
if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)
printf("File write error\n");
fclose(fp);
}
void main()
{
FILE *fp;
int i;
//用于对学生成员信息统计
for (i=0;i<SIZE;i++)
{
scanf("%d%s%d",&stu[i].stu_NO,stu[i].name,&stu[i].score);
}
//用于将统计后的学生信息保存到stu_list
save();
fp = fopen("stu_list.txt","rb");
for (i=0;i<SIZE;i++)
{
fread(&stu[i],sizeof(struct student),1,fp);
// printf("%d %s %d\n",stu[i].stu_NO,stu[i].name,stu[i].score);
}
qsort((void *)stu,SIZE,sizeof(stu[0]),cmp);
fclose(fp);
//将成绩排序后的学生信息保存到stu_list
save();
//用于检测最后stu_list文件中的信息
fp = fopen("stu_list.txt","rb");
for (i=0;i<SIZE;i++)
{
fread(&stu[i],sizeof(struct student),1,fp);
printf("%d %s %d\n",stu[i].stu_NO,stu[i].name,stu[i].score);
}
fclose(fp);
}
已经编译通过 楼主可以检查一下。。。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询