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