2014-02-22 88 views
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; 
} 
+0

你應該檢查'fread()'的返回值。如果test.bin是一個空文件,程序會發生什麼情況? –

+0

如果文件是二進制文件,那麼你應該[打開](http://en.cppreference.com/w/c/io/fopen)它以二進制模式。 –

+0

你確定文件在這些地方實際上有0x20,也就是說,你是用十六進制編輯器還是hexdump來看它,還是隻有在線轉換器的參考? – Arkku

回答

0

代碼工作正常,但在二進制數據copypasting到網站0x00字節落得變成了空間,這在ASCII和兼容的字符集值0x20

+0

啊好吧我想我應該只使用網站要轉換從十六進制 - >二進制 – bakalolo