我将从我的缓冲区中写入数据,缓冲区定义为
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);
}
最佳答案
FILE * pFile = fopen(filename, "w");
应该是
FILE * pFile = fopen(filename, "wb");
当您应该以二进制模式打开文件时,您正在以文本模式打开文件。在 Windows 上,它会导致在每个 \n
(0xA) 之前额外写入一个 \r
(0xD)。
关于c++ - 将缓冲区写入文件(存储 1585 字节而不是 1580),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33668983/