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