0

假设有一个目标文件 input.obj。在终端中,如果我执行“cat input.obj”,它会返回一些随机字符,例如“???A?J”。但是当我“hexdump”它时,它会显示我想读入程序的值。

我将这个 obj 文件读入 program.c,首先使用 fopen 打开它,然后使用 fgetc 逐字节读取。但是,它实际上是在读取“cat input.obj”中显示的内容,而我希望它读取 hexdump 中的实际内容。有任何想法吗?

代码片段(来自海报的评论):

 char *filename; 
 FILE *f; 
 char c; 
 f = fopen(filename, "r"); 
 c = fgetc(f);
4

2 回答 2

1

本质上,您需要打印每个字节的整数表示以获得所需的内容,而不是字节本身。尝试这个:

char ch = ...; // Set ch to the value you read from the file
printf("%x", ch & 0xff);

& 0xFF 确保将值打印为 1 个字节。

于 2012-11-20T01:10:57.337 回答
0

这也是我曾经面临的一个问题。令人惊讶的是 fopen 和 fgetc 不会得到整个文本文件,并且会在不解析整个目标文件的情况下到达 EOF。

请改用 open() 和 read() 系统调用。您可以使用手册页检查它们的语法。

他们给你整个目标文件,就像你做的那样

$ hexdump -C 1_hello.o

于 2017-01-23T13:08:02.207 回答