我想在一個特定的從文件中讀取偏移(簡體版)EOF返回true:FEOF()的時候沒有達到
typedef unsigned char u8;
FILE *data_fp = fopen("C:\\some_file.dat", "r");
fseek(data_fp, 0x004d0a68, SEEK_SET); // move filepointer to offset
u8 *data = new u8[0x3F0];
fread(data, 0x3F0, 1, data_fp);
delete[] data;
fclose(data_fp);
的問題變得,該數據將不包含1008個字節,但529(似乎是隨機的)。當它達到529字節時,對feof(data_fp)的調用將開始返回true。
我也嘗試讀取較小的塊(一次8個字節),但它看起來像是在EOF尚未存在時觸及EOF。
十六進制編輯器中的簡單外觀顯示there are plenty of bytes left。
@pmg,使用malloc/free不會解決我的問題,但適合自己:) – 2010-12-14 16:20:20
在C(我不知道C++)我會嘗試以二進制模式打開文件 – pmg 2010-12-14 16:21:38
@pmg,該死!就這麼簡單...請創建一個答案,我會接受它。 – 2010-12-14 16:24:26