2016-06-30 2 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); 

Большое спасибо,

EDIT: Входной файл является .log файл, который выглядит в шестнадцатеричном редакторе: Input data

+0

Не могли бы вы опубликовать данные ввода? Вы должны проверить возвращение «fopen». – LPs

+0

Пожалуйста, проверьте значение 'argc' перед доступом к' argv [1] 'и проверьте значение' Inputfile' перед вызовом 'fgetc'. –

+0

Это связанный файл с реальным файлом, который вы открываете? – LPs

ответ

1

В системах Windows, чтение текстового файла прекращается, когда данные 0x1a считываются из файла. Это то же значение, что и конец файла Ctrl-Z при вводе на клавиатуре.

данных Пример чтения файла после открытия в двоичном режиме: данные файла

41 42 43 44 1a 45 46 47 

Примеры чтения после открытия в текстовом режиме:

41 42 43 44 

Пожалуйста, откройте файл в двоичном режиме.

Inputfile = fopen(filename, "rb"); 

В других системах это может быть другой маркер EOF.