将缓冲区写入文件(存储 1585 字节而不是 1580)

Writing a buffer into file (stored 1585 byte instead 1580)

我将从我的缓冲区写入数据,缓冲区定义为

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)。