我想向二进制文件写入一系列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时,要写入的第一个参数的大小必须至少与要写入的第二个参数的值一样大。

关于c++ - 将0写入二进制文件C++,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16285076/

10-11 14:33