我有这个二进制文件,当我使用HexView打开文件时显示正确的值。
4c 60 02 aa b4 c2 d1 e3 1a 01 00 00 8c 01 00 00 f5 01 00 00 52 02 00 00 bd 02 00 00 20 03 00 00 32 03 00 00 59 03 00 00
当我使用fread将40字节数据读入char缓冲区时,它失败了。从第9个字节数据开始,所有回读数据都是0x00。
int main()
{
FILE *stream;
char flag[40]={0};
size_t numread = 0;
UINT theme = 0;
if ((stream = fopen("alignment.bin", "r")) != NULL)
{
numread = fread(&flag, 1, 40, stream);
fclose(stream);
}
else
{
cout << "File open failed" << endl;
}
system ("pause");
return 0;
}
答案 0 :(得分:9)
尝试使用"rb"
代替"r"
。可能存在一些奇怪的文本格式问题。
指定b
使其以纯二进制方式读取而不进行格式化。
答案 1 :(得分:0)
0x1A == 26 == ctrl-Z == EOF。
如果您在文本模式下阅读,则流会考虑在该点之后完成的流程(以下是“其他传输的垃圾”)。