0

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

我这样做正确吗?

代码:

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

2 回答 2

7

像这样

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第一个参数的大小写时,必须至少和第二个参数的值一样大。

于 2013-04-29T17:52:56.830 回答
6

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

于 2013-04-29T17:52:30.120 回答