【发布时间】:2016-02-13 15:10:21
【问题描述】:
我将从我的缓冲区写入数据,定义为
char outBuff[16000];
进入文件。我已经从另一个文件加载了 1580 字节的数据。在此之后,我使用函数 WriteAllBytes 将此数据存储在新文件中。在变量 count 中,值 = 1580,但磁盘上的文件大小为 1585 字节。从那里有这个区别?
static bool WriteAllBytes( char * filename, const char * pWriteBuff, int size)
{
FILE * pFile = fopen(filename, "w");
ofstream fout("test.txt");
if (!pFile)
return false;
int count = 0;
for (int i = 0; i < size; i++)
{
if (fwrite(pWriteBuff, 1, 1, pFile) != NULL)
{
pWriteBuff++;
count ++;
}
fout << *pWriteBuff;
}
if (count != size)
return false;
fclose(pFile);
}
【问题讨论】:
-
显示您如何称呼
WriteAllBytes。与您的问题没有直接关系:您为什么不只调用一次fwrite(pWriteBuff, 1, size, pFile)而不是写size次一个单字节?顺便说一句,看看你的代码,count ++周围的某处缺少一个}。 -
注意:文件已被操作系统缓冲。如果你使用
std::ofstream,它们也会被对象缓冲。 -
更新您的问题而不是评论。
-
@Michael Walz, WriteAllBytes("test3.txt",outBuff, size);我为测试按单个字节编程
-
@Sauber 不回答我的 cmets 但更新您的问题。