从.log文件读取十六进制数据时出错

时间:2016-06-30 12:41:57

标签: c hex eof fgetc

我在从命令行上指定的.log文件中读取十六进制数据时遇到问题。 它只打印大约30行然后退出。 任何人都可以帮助我理解为什么会这样吗?我需要它来打印输入文件中的所有十六进制数据。

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

1 个答案:

答案 0 :(得分:1)

在Windows系统上,当从文件中读取数据0x1a时,读取文本文件将终止。这与在键盘上输入时Ctrl-Z文件结尾的值相同。

以二进制模式打开后读取的示例文件数据:

41 42 43 44 1a 45 46 47

以文本模式打开后读取的示例文件数据:

41 42 43 44

请以二进制模式打开文件。

Inputfile = fopen(filename, "rb");

在其他系统上,它可能是一个不同的EOF标记。