2

から読み取るプログラムを作成してからstdin、読み取ったものを に書き込みstdout、見​​つかったエスケープされた 16 進数をエスケープ解除します。読みたい数字はすべて8ビットです。これは私がこれまでに持っているものです

while((c = fgetc(stdin)) != EOF) {
    if(c == '%') {
        fscanf(stdin,"%x",&r);
        printf("%i \n",r);
    }
}

%FFFこれは正常に機能しますが、標準入力に何かを書き込むと、それが 3 桁の 16 進数として読み取られるという事実を除きます。fscanf2 文字のみの読み取りに制限するにはどうすればよいですか? 次の 2 文字をバッファに読み込むことを考えましたsscanf'ingが、それは私にはかなり洗練されていないように感じます。

4

1 に答える 1