#include<stdio.h>
void main()
{
printf("%c\n",'i');
return;
}
这个文件编译成try.exe,进行以下操作.
#include<stdio.h>
int main()
{
FILE *fp=NULL;
char a[1000];
if((fp=fopen("try.exe","r"))==NULL) {printf("error!!");return 1;}
fread(a,sizeof(char),1000,fp);
/*
这里写上你测试的语句.
*/
return 0;
}
我想问的是:
a[0x74],a[0x75],a[0x76],a[0x77]这几个数看一下
是不是和try.exe中相应位置一样.
我的编译环境是VC6.0
测试结果,a[0x75]位置读漏了一个字节,
即在try.exe的0x75位置有连续的两个0x0D,但读到a数组里只剩一个0x0D了.
我把try.exe的0x76位置的0x0D改为其它的值,数组a在这个位置又对了.
我想请高手指一条明路小弟走,怎样才可以完整地把文件读取出来,而不会像这样少读了一个字节.
高金山朋友,谢谢你的回答,这样虽解决了读取的问题,但在这个例子中成立难以保证不会在其它例中子出错,像用"r"参数一样.
我只要把文件改一下,"r"参数也能正确读出.也就是说,这个文件刚好让"r"参数出错了.
我关心的是错误本身.
我想知道这种错误原因.应该是系统的错,我是想找出这种错是错在哪个环节.并找到解决这个错误的办法.
在此附上fread的实现细节,望指出在哪里读漏了一个字节.
http://hi.baidu.com/aauutthh/blog/item/828bfed89430173033fa1cf1.html