最近需要用到二进制文件读写的相关操作,这边稍微总结下,首先二进制文件的读写可以使用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表示负向偏移两个字节.