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() システム コールを使用してください。man ページを使用して構文を確認できます。

それらは、あなたがそうするときに見られるように、オブジェクトファイル全体を提供します

$ hexdump -C 1_hello.o

于 2017-01-23T13:08:02.207 に答える