FILE *a=fopen("C:/123.exe","rb");fseek(a,0L,SEEK_END);long b=ftell(a);char * loc=(char *)malloc(b);if(loc==NULL)printf("error");memset(loc,0,b);fseek(a,0L,SEEK_SET);fread(loc,b,1,a);fclose(a);以rb方式打開,例如我自己創(chuàng)建個1.exe記事本方式打開寫入 abc 123 就可以正確讀取,但是如果是BMP那類的文件 就只讀取前面幾個字符(都是字符后有空格) 之后就都不讀取了,為什么?
2 回答

慕村9548890
TA貢獻1884條經(jīng)驗 獲得超4個贊
根據(jù)你的程序,應(yīng)當(dāng)是讀進來了;
但最好按照unsigned char讀入,另外也不能按照字符串處理,因為二進制文件中有許多0,打印輸出時以%x格式打印。
另外你還要判斷一下這個b會不會超過64k,如果超大,需要用大模式來編譯程序,以便支持大的內(nèi)存區(qū)訪問。建議用小些的文件測試。

拉丁的傳說
TA貢獻1789條經(jīng)驗 獲得超8個贊
"C:/123.exe"這里應(yīng)該是"C:\\123.exe"才對,其他沒有大問題。fread是按字節(jié)讀取的,.exe文件有好多數(shù)據(jù)按字符是無法顯示的,不知你是怎么判斷沒有讀取正確。
- 2 回答
- 0 關(guān)注
- 122 瀏覽
添加回答
舉報
0/150
提交
取消