上一篇 | 这是最后一篇日志下一篇
Coding 订阅所有Coding的日志

02

17

C语言二进制文件读写(Binary I/O)实例

经常遇到这样的问题。由于二进制文件没有ASCII方式的直观性,所以读写时调试起来比较麻烦。用C语言读写文件的好处之一是比C++的I/O库快(如果做过ACM应该会有这样的体验),此外C语言读写只需要简单的几个库函数,如fopen(),fclose(),fwrite(),fread(),fsanf(),fprintf(),其中fsanf()和fprintf()用于ASCII文件的读写,fwrite()和fread()用于二进制文件的读写。以下是一个小小的实例总结:

typedef struct tagPoint
{
double x,y,z;
}Point;

设有结构体:Point plist[100];

文件:file.dat

file.dat中的数据和结构体数组plist中的数据组织方式一致。

现在我们的任务是:

1、将文件file.dat中的数据读到plist中

2、或者将plist中的数据写到文件file.dat中。

读:

FILE *fp = fopen("file.dat","r");

fread(plist,sizeof(Point),100,fp);

fread的返回值为实际读入的结构体Point的元素个数。

写:

   FILE *fp = fopen("file.dat","w");

fwrite(plist,sizeof(Point),100,fp);

fread的返回值为实际写入的结构体Point的元素个数。

简单吧,fread和fwrite的参数完全一样。在实际进行文件读写之前,应该先弄清文件数据的数据结构,这样就可以根据数据结构来设计与文件数据一致的结构体,一次性读入或写入数据。而不需要每次从二进制文件中读写一小块儿数据,从而避免出错,同时也避免多次的循环读写,加快读写速度。



文章来自: 网络
引用通告: 查看所有引用 | 我要引用此文章
Tags: c Code
相关日志:
评论: 1 | 引用: 0 | 查看次数: -
回复回复qianjinpianfang.com[2014-10-28 08:16 PM | del]
谢谢博主分享。
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.