将 0 写入二进制文件C++

Writing 0's to a binary file C++

本文关键字:二进制文件 C++      更新时间:2023-10-16

我想在二进制文件中写入一系列0。作为一个字符,这应该是一个空格,然而,当我写入我的文件时,我收到了许多其他奇怪的字符。我写的不是零,而是别的东西。

我这样做对吗?

代码:

int zero = 0;
myfile.write(reinterpret_cast<char *>(&zero),1790*sizeof(char));    

像这样

for (int i = 0; i < 1790; ++i)
{
    char zero = 0;
    myfile.write(&zero, sizeof(char));
}

你的代码写了1790字节,但zero只有4字节大,所以你最终写了随机的垃圾。

另一种方式是

char zero[1790] = { 0 };
myfile.write(zero, sizeof zero);

关键是当您使用write时,要写入的第一个参数的大小必须至少与要写入的第二个参数的值一样大

您正在从地址&zero开始写入1790字节的随机内存。该内存的前4个字节将为零(zero的值假设为sizeof(int)==4),其余的可能不是。