Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/153.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
到fread读取的多个字符 我试图用二进制模式打开文件,并将内容写入C++中的缓冲区。 我正在为此使用fread。但是出了点问题。 我的代码是: FILE * in = fopen("in", "rb"); _in = new unsigned char [length_in]; fread(_in, sizeof(char), length_in, in);_C++_Fstream_Ofstream - Fatal编程技术网

到fread读取的多个字符 我试图用二进制模式打开文件,并将内容写入C++中的缓冲区。 我正在为此使用fread。但是出了点问题。 我的代码是: FILE * in = fopen("in", "rb"); _in = new unsigned char [length_in]; fread(_in, sizeof(char), length_in, in);

到fread读取的多个字符 我试图用二进制模式打开文件,并将内容写入C++中的缓冲区。 我正在为此使用fread。但是出了点问题。 我的代码是: FILE * in = fopen("in", "rb"); _in = new unsigned char [length_in]; fread(_in, sizeof(char), length_in, in);,c++,fstream,ofstream,C++,Fstream,Ofstream,调试时,我可以看到\u in=unsigned char*“Asdfghjkl\x1f\x10” 重建程序时,零件\x1f\x10会随机更改或消失 我所期望的总是\u in=unsigned char*“Asdfghjkl” 当用9替换中的length\u时,我仍然会得到类似“Asdfghjkl\x1f\x10” 我错过了什么。我使用的是Mac和Xcode。您的数组是在未初始化的情况下创建的,所以这些都是内存中的垃圾值。将其初始化为零,如下所示: _in = new unsigned char

调试时,我可以看到
\u in=unsigned char*“Asdfghjkl\x1f\x10”

重建程序时,零件
\x1f\x10
会随机更改或消失

我所期望的总是
\u in=unsigned char*“Asdfghjkl”

当用
9
替换
中的
length\u时,我仍然会得到类似
“Asdfghjkl\x1f\x10”


我错过了什么。我使用的是Mac和Xcode。

您的数组是在未初始化的情况下创建的,所以这些都是内存中的垃圾值。将其初始化为零,如下所示:

_in = new unsigned char [length_in]();

另外,
fread
返回读取的字节数。如果将其视为字符串,请确保结果以null结尾。

您读取的是字节,而不是字符串。所以零终止符不见了。如果要这样做,请不要忽略fread()的返回值。不要忽略
fread
的返回值。它包含重要信息,比如实际读取了多少数据。