问题描述
- 关于 VC++ 将 数据分成 2 半 输入到2个文件
-
数据的定义是: char AA[12012120]={0} ;然后 在 fwrite 函数中, 新建一个文件并打开,以"wb" 方式 写入
然后 有一个 DWORD icount ; 这样一个定义是 数据的总长度(字节)
然后 ,请问能不能有什么办法,将这个数据 分成2半,写入2 个文件, 如果 fwrite达不到这个效果,请问还有其它函数可以达到吗
因为数据非常大,大的时候有几百M, 所以, 能不能以 数据偏移的方式,来写
以上
非常感谢!
解决方案
size_t fwrite(const void* buffer, size_t size, size_t count, FILE* stream);
注意:这个函数以二进制形式对文件进行操作,不局限于文本文件
返回值:返回实际写入的数据块数目
(1)buffer:是一个指针,对fwrite来说,是要获取数据的地址;
(2)size:要写入内容的单字节数;
(3)count:要进行写入size字节的数据项的个数;
(4)stream:目标文件指针;
(5)返回实际写入的数据项个数count。
说明:写入到文件的哪里? 这个与文件的打开模式有关,如果是w+,则是从file pointer指向的地址开始写,替换掉之后的内容,文件的长度可以不变,stream的位置移动count个数;如果是a+,则从文件的末尾开始添加,文件长度加大。
fseek对此函数有作用,但是fwrite[1] 函数写到用户空间缓冲区,并未同步到文件中,所以修改后要将内存与文件同步可以用fflush(FILE *fp)函数同步。
可以跟fseek结合起来用的
解决方案二:
size_t fwrite(const void* buffer, size_t size, size_t count, FILE* stream); fseek跟前面的一块用