问题描述
我正在尝试以二进制模式打开文件并将内容写入C ++中的缓冲区。
我为此使用fread
。但是出了点问题。
我的代码是:
FILE * in = fopen("in","rb");
_in = new unsigned char [length_in];
fread(_in,sizeof(char),length_in,in);
调试时,我可以看到_in = unsigned char * "Asdfghjkl\x1f \x10"
。
重建程序时,\x1f \x10
部分会随机变化或消失。
我一直期望的是_in = unsigned char * "Asdfghjkl"
。
将length_in
替换为9
时,我仍然得到类似"Asdfghjkl\x1f \x10"
的信息。
我想念的是什么。我正在使用Mac和Xcode。
解决方法
您的数组是未初始化创建的,因此它们是来自内存中任何内容的垃圾值。像这样将其初始化为零:
_in = new unsigned char [length_in]();
也fread
返回读取的字节数。如果您将其当作字符串来对待,请确保结果以空值结尾。