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

标签 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

最佳答案

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

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

41 42 43 44 1a 45 46 47

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

41 42 43 44

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

Inputfile = fopen(filename, "rb");

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

关于c - 从 .log 文件读取十六进制数据时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38123435/

相关文章:

c - 为什么通配符不能代表FindFirstFile中的目录?

c - 为什么 Linux(?) 终端不是 "consume" '\n' EOF?

java - 确定文件是否以 EOF 字符正确结束

编译 "stress-ng"包的静态链接可执行文件

c - 为什么我不能将 scanf 语句直接分配给 C 中的变量?

c - C 中的静态成员

python - 在 python 中将十六进制转换为 BCD

Python - 十进制到整数低字节然后高字节

javascript - 为颜色的十六进制表示添加不透明度

c - 写文件时 "manually"怎么表示EOF?