对于许多通过恐惧阅读的字符

问题描述

我正在尝试以二进制模式打开文件并将内容写入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返回读取的字节数。如果您将其当作字符串来对待,请确保结果以空值结尾。