c++读写二进制文件

来源:互联网 发布:自动冲话费软件 编辑:程序博客网 时间:2024/06/15 22:31

最近需要用到二进制文件读写的相关操作,这边稍微总结下,首先二进制文件的读写可以使用fread和fwrite来处理。

fread函数原型:size_t _cdecl fread(void*, size_t,size_t,FILE*);

第一个参数表示的是缓存,第二个参数表示的是基本单元的大小,第三参数表示的是基本单元的个数,第四个参数表示的是原文件

例如:

int size=1024;

unsigned char buf[1024];

FILE* infile=fopen("lena.bmp","rb");

int rc=fread(buf,sizeof(unsigned char),size,infile);

需要注意的地方:

返回值rc表示当前这次读文件操作读出来数据的数量,如果当前文件只剩下2个unsigned char了,则返回值rc为2,同时当前文件指针前移2个位置。如果当前文件还有1024个unsigned char,则rc为1024,同时文件指针前移1024个。

 

fwrite函数原型: size_t  _cdecl fwrite(const void*, size_t,size_t,FILE*);

第一个参数表示需要写入的数据目前所在的缓存,第二个参数写的是写入数据的基本单元的大小,第三个参数表示的写入数据的基本单元的个数,第四个参数表示的是输出文件

例如:

FILE* outfile=fopen("newlena.bmp","wb");

fwrite(buf,sizeof(unsigned char),size,outfile);

 

除此以外,文件读写中用的还比较多的函数有fseek函数.

fseek函数原型: int _cdecl fseek(FILE*, long, int);

函数作用:定位文件的读写指针的位置

例如: fseek(infile,-2,SEEK_END);//把当前文件的指针定位到文件倒数第二个字符,SEEK_END表示文件末尾位置,-2表示负向偏移两个字节.

原创粉丝点击