重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

例えば
2b7e151628aed2a6abf7158809cf4f3c
のうようなファイルを
2b 7e 15 16 28 ae d2 a6 ab f7 15 88 09 cf 4f 3c ------(*)
のような16個の配列からなる数字列として考えて読み込むにはどうすればよいでしょうか?うまく思いつきません。
なお、
unsigned char num[16];

(上記の数字列を入力)

for(int i=0; i<16; i++)
printf("%x", num[i]);

を実行すると(*)のように表示されるようにしたいです。

詳しい方よろしくお願いします。

A 回答 (2件)

とりあえず、文字列を1行読み込めるバッファを用意して、まるっと読み込む。


# ファイルならfgets()辺り。

16進数2桁+終端コード('\0')を格納できる配列を用意する。
ループ用のカウンタも必要ですが。

strncpy()で16進数2桁を作業用領域にコピー。
作業領域に終端コードを念のためセットして
strtol()で数値化して配列(num[])に格納する。
というのをstrncpy()でのコピー開始位置を移動させながら繰り返す。

>for(int i=0; i<16; i++)
>printf("%x", num[i]);
>を実行すると(*)のように表示されるようにしたいです。
この書式指定では無理です。
2b7e151628aed2a6abf715889cf4f3c
と表示されるでしょう。
printf("%02x ", num[i]);
にしないと。
    • good
    • 0

scanf でできるんじゃない? %2x でも使えばいいと思う.

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

今、見られている記事はコレ!