我在从命令行上指定的.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
答案 0 :(得分:1)
在Windows系统上,当从文件中读取数据0x1a
时,读取文本文件将终止。这与在键盘上输入时Ctrl-Z
文件结尾的值相同。
以二进制模式打开后读取的示例文件数据:
41 42 43 44 1a 45 46 47
以文本模式打开后读取的示例文件数据:
41 42 43 44
请以二进制模式打开文件。
Inputfile = fopen(filename, "rb");
在其他系统上,它可能是一个不同的EOF标记。