我想在二进制文件中写一系列0。作为一个char,这应该是一个空格,但是,当我写入我的文件时,我收到了许多其他奇怪的字符。我不是写零,而是看似别的东西。
我这样做是否正确?
代码:
int zero = 0;
myfile.write(reinterpret_cast<char *>(&zero),1790*sizeof(char));
答案 0 :(得分:6)
您正在从地址&zero
开始编写1790字节的随机存储器。该内存的前4个字节将为零(zero
的值为sizeof(int)==4
),其余的可能不是。
答案 1 :(得分:6)
喜欢这个
for (int i = 0; i < 1790; ++i)
{
char zero = 0;
myfile.write(&zero, sizeof(char));
}
您的代码写入1790个字节,但zero
只有四个字节,因此您最终会编写随机垃圾。
另一种方式是
char zero[1790] = { 0 };
myfile.write(zero, sizeof zero);
关键是当你使用write
时,要写入的第一个参数的大小必须至少与要写入的第二个参数的值一样大。