把结构用二进制方式写入文件,并读出来

很简单,但是经常被问及的问题。下面的代码是C语言写的,将一个结构student用二进制的方式写入文件e:/fle.bxt中,并读取出来。

#include <stdio.h>

#include <string.h>

struct student

{

    int num;

    char name[10];

    float score;

};

 

main()

{

         char* filename="e://file.bxt";

    student a;

    FILE *fp;

 

         // 为二进制写而打开文件

         fp = fopen(filename,"wb");

    if(!fp)

         {

                   printf("error in opening file/n");

         }

         // 准备数据1

         a.num = 1;

         strcpy(a.name, "Albert");

         a.score = (float)99.9;

         // 二进制写文件1

         fwrite(&a, sizeof(student), 1, fp);

 

         // 准备数据2

         a.num = 2;

         strcpy(a.name, "Bob");

         a.score = (float)98.5;

         // 二进制写文件2

         fwrite(&a, sizeof(student), 1, fp);

         // 关闭文件

         fclose(fp);

  

         // 为二进制读打开文件

         fp = fopen(filename,"rb");

         // 读第一个存入的结构数据

         fread(&a,sizeof(student),1,fp);

         // 打印读出的数据

         printf("%d/t%s/t%f/n",a.num, a.name, a.score);

 

         // 重新定位到下第二个存入的结构数据

         fseek(fp, sizeof(student), SEEK_SET);

         // 读第二个存入的结构数据

         fread(&a,sizeof(student),1,fp);

         // 打印读出的数据

         printf("%d/t%s/t%f/n",a.num, a.name, a.score);

         // 关闭文件

         fclose(fp);

        

         return 0;

}

 

// 输出结果:

// 1    Albert        99.900002

// 2    Bob           98.500000

©️2020 CSDN 皮肤主题: 大白 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值