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

来源:互联网 发布:无线网卡发现不了网络 编辑:程序博客网 时间:2024/04/29 14:36

很简单,但是经常被问及的问题。下面的代码是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

原创粉丝点击