2016-06-30 25 views
0

我在從命令行上指定的.log文件讀取十六進制數據時遇到問題。 它只打印約30行,然後退出。 任何人都可以幫助我理解爲什麼會發生這種情況?我需要它從輸入文件中打印所有的十六進制數據。從.log文件讀取十六進制數據時出錯

int byte; 
FILE *Inputfile = stdin; 
char *filename = argv[1]; 
Inputfile = fopen(filename, "r"); 

while((byte = fgetc(Inputfile)) != EOF) 

    { 
     printf(" %02x",byte); 
    } 

    fclose(Inputfile); 

非常感謝,

編輯:輸入文件是.log文件看起來像這樣在十六進制編輯器: Input data

+0

你能發佈你輸入的數據嗎?你應該檢查'fopen'返回。 – LPs

+0

請在訪問'argv [1]'之前測試'argc'的值,並在調用'fgetc'之前測試'Inputfile'的值。 –

+0

鏈接文件是你打開的真實文件嗎? – LPs

回答

1

在Windows系統中,閱讀文本文件將終止時從該文件讀取數據0x1a。在鍵盤上輸入時,這與Ctrl-Z文件結尾的值相同。以二進制模式打開後讀取

示例文件數據:在文本模式下打開後讀

41 42 43 44 1a 45 46 47 

示例文件數據:

41 42 43 44 

請以二進制方式打開該文件。

Inputfile = fopen(filename, "rb"); 

在其他系統上,它可能是一個不同的EOF標記。