我正在使用 C++ 中的 FILE 对象读取二进制文件的片段。这是 fseek 和相应的 fread 调用:
fseek(fp, startLocation, SEEK_SET);
fread(data, m_sizeOfData, 1, fp);
m_sizeOfData 最终是一个大于 40 万的整数。这似乎应该将二进制文件中的所有 40 万+字节读入数据(顺便说一下,这是一个 char[m_sizeOfData]),但是它在一个看起来像一个盒子的 unicode 字符处大约 6 或 7 个字符后停止。我在想它可能代表一个空终止?我对此并不积极。我正在阅读的每个文件都不是这种情况。大多数似乎(通常)正常工作。
为什么会这样?有没有办法正确读取所有数据?
编辑:
fp 定义如下:
FILE* fp;
_wfopen_s(&fp, L"C://somedata.dat", L"rb");
这个方框字符(十六进制)是 0x06 后跟 0x00。
数据定义为: char *data = new char[m_sizeOfData];
编辑 2:
我还注意到另一个文件的末尾加载了一些垃圾。垃圾看起来像:
ýýýý«««««««««îþ
这是因为它试图完成一定的字节数吗?