在Windows的集成开发环境中(Qt、VC、VS中均存在该问题)编写有关文件读取的C/C++程序出现读取到0x1a蓝屏的时候意外终止的情况,经调试检查发现0x1a蓝屏经过读取之后被处理成0XFF(即EOF(-1))但是Linux中(Redhat6.4以及Ubuntu14.04中测试)不存在这种解析错误的问题。关于出现这种问题的原因可参考:那么解决办法有两种:
1、用二进制的方式读取:
以“.dcm”的文件解析为例(将new.dcm的信息解析成十六进制输出到new.hex中去):
2、判断文件读取遇到EOF(0XFF)的原因是0x1a蓝屏引起的还是到文件末尾引起的:
同样是对上面所述文件进行读取:
关于fgetc()返回值为何为int以及对于EOF引起的另外一种读取文件意外结束的情况,可以参考这两种意外结束不昰一种情况,一个是逻辑不严谨导致的一个就目前看来是微软系统库的问题。