我想将一系列 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
第一个参数的大小写时,必须至少和第二个参数的值一样大。
您正在从 address 开始写入 1790 字节的随机内存&zero
。该内存的前 4 个字节将为零(zero
假设的值sizeof(int)==4
),其余的可能不是。