文件的读写

输入若干个学生的数据存入文件1中,从中挑选出成绩不及格的学生数据放入文件2,并输出文件2中的内容。
思路:新建文件1→写入数据→新建文件2→文件1的数据读出至结构体→结构体中的数据进行筛选并写入文件2→文件2中的数据读出至结构体→输出结构体中的数据

#include <stdio.h>
#include <stdlib.h>
struct stu{
    char name[20];
    int num;
    float score;
};	
int main(){
    struct stu stud,stud1;
    FILE*fp;
    fp=fopen("list","wb");	/*二进制只写的方式打开文件list,之前list不存在,故wb操作会新建一个名为list的文件,并用指针fp指向它*/
    while(1){
        scanf("%s%d%f",stud.name,&stud.num,&stud.score);
        if(stud.num<0)
        break;	/*输入学生数据,以学号出现负数为标志停止输入*/
        fwrite(&stud,sizeof(struct stu),1,fp);	/*将结构体中的数据写入fp指向的文件(list)*/
    }
    fclose(fp); /*关闭文件*/
    FILE*in=fopen("list","rb");	/*二进制只读方式打开list,用in指针指向*/
    FILE*out=fopen("fa","wb");	/*二进制只写方式新建fa*/
    while(1){
        fread(&stud,sizeof(struct stu),1,in);	/*将list中的数据读出存入结构体中*/
        if(feof(in))
        break;	/*到文件末尾则停止循环*/
        if(stud.score<60)
        fwrite(&stud,sizeof(struct stu),1,out);	/*对于每次存入结构体中的数据进行判断,若score<60则写入文件fa中*/
    }
    fclose(in);	/*关闭list文件*/
    fclose(out);	/*关闭fa文件*/
    FILE* fpp=fopen("fa","rb");	/*二进制只读方式打开fa*/
    while(1){
        fread(&stud1,sizeof(struct stu),1,fpp);	/*将fa中的数据读出并存入结构体中*/
        if(feof(fpp))
        break;
        printf("%s %d %f\n",stud1.name,stud1.num,stud1.score);/*每次存入后进行输出,否则数据被覆盖*/
    }
    fclose(fpp);
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值