C Primer Plus(6) 中文版 第14章 结构和其他数据形式 14.8 把结构内容保存到文件中

14.8 把结构内容保存到文件中
由于结构可以存储不同类型的信息,所以它是构建数据库的重要工具。数据库文件可以任意数量的此类结构的数据对象。存储在一个结构中的整套信息被称为记录(record),单独的项被称为字段(field)。本节来谈论这个主题。
或许存储记录最没效率的方法使用fprintf()。例如,回忆程序清单14.1中的book结构:
#define MAXTITL 40
#define MAXAUTL 40
struct book {
    char title[MAXTITL];
    char author[MAXAULT];
    float value; 
}; 
如果pbook标识一个文件流,那么通过下面这条语句可以把信息存储于struct book类型的结构变量primer中:
fprintf( pbook, "%s %s %.2f\n", primer.title, primer.author, primer.value );
对于一些结构(如,有30个成员的结构)。这个方法用起来很不方便。另外,在检索时还存在问题,因为程序要知道一个字段结束和另一个字段开始的位置。虽然用固定字段宽度的格式可以解决这个问题(例如,"%39s%39s%8.2f"),但是这个方法仍然很笨拙。更好的方案是使用fread()和fwrite()函数读写结构大小的单元。这两个函数使用与程序相同的二进制表示法。例如:
fwrite( &primer, sizeof(struct book), 1, pbooks );
fread()函数从文件中拷贝一块结构大小的数据到&primer指向的位置。简而言之,这两个函数一次读写整个记录,而

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_40186813

你的能量无可限量。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值