0
我想讀取一個二進制文件,並打印每個字節裏面的2hex數字,但是當我到達一個空間我的程序打印'0',當它應該是'20'和它這樣做從01讀取二進制文件在C錯誤的輸出
20 17 FF FF FF FF 20 20 17 FF FF FF FF FF 20 20 20 FF 20 20
沒有人知道我的輸出輸出每20
0 17 FF FF FF FF 0 0 17 FF FF FF FF FF 0 0 0 FF 0 0
怎麼回事? 文件= ÿÿÿÿ ÿÿÿÿÿ ÿ
//Read the test.bin file!!
#include<stdio.h>
char initial[] = "test.bin";
struct rec{
unsigned char mydata;
};
int readfile(char []){
int counter;
FILE *ptr_myfile;
struct rec my_record;
ptr_myfile=fopen(initial,"r");
if (!ptr_myfile){
printf("Unable to open file!");
return 1;
}
for (counter=1; counter <= 20; counter++){
fread(&my_record,sizeof(struct rec),1,ptr_myfile);
printf("%X\n",my_record.mydata);
}
fclose(ptr_myfile);
return 0;
}
int main(){
readfile(initial);
return 0;
}
你應該檢查'fread()'的返回值。如果test.bin是一個空文件,程序會發生什麼情況? –
如果文件是二進制文件,那麼你應該[打開](http://en.cppreference.com/w/c/io/fopen)它以二進制模式。 –
你確定文件在這些地方實際上有0x20,也就是說,你是用十六進制編輯器還是hexdump來看它,還是隻有在線轉換器的參考? – Arkku