- ベストアンサー
ASCIIコード表の出力
ASCIIコード表を出力するプログラムを作成中なのですが、 1~32の’BEL’等が実行されてしまいコマンドプロンプト上に表示させることが出来ません。 現在、出力はcntをループさせ、 printf("%d | %c", cnt, cnt); の様にしております。 よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
>表示させることが出来ません。 ・決めごと(*)ですから・・・。逆に、「表示」できてしまうと、その文字に決めた(割り当てた)「制御」が働かなくなってしまう。 ・例えば、cで printf( "\n" );としても改行(\n)してくれないと困りますよね。 ★printf()文は、コンソールに【コード】を送っているだけ、たまたまそのコードが、割り当てた「図形文字」だった場合、その【文字】を「表示」する、と考えればいいのでは・・・。 >現在、出力はcntをループさせ、printf("%d | %c", cnt, cnt);の様にしております。 ・参考URLのように、「制御文字」部分は、printf( "[%3d][%02X]\n", cnt, cnt);と10進と16進で【コード】そのものを「表示」させたら如何でしょう。 (*) 私は、EBSDICコードが文字コードとしての初物でしたが、まったくASCIIコードとは異なります。一企業(IBM)が決めただけ・・・。
その他の回答 (3)
- jacta
- ベストアンサー率26% (845/3158)
制御文字等はいずれにせよまともに表示することができません。 isprint関数で文字が表示可能かどうかを調べ、真ならそのまま表示、偽なら16進表示にするなどの工夫が必要です。
- yaemon_2006
- ベストアンサー率22% (50/220)
iscntrl()
- php504
- ベストアンサー率42% (926/2160)
cntの値が32から126までを表示するようにすればどうでしょう
お礼
回答ありがとうございます。 やはりその方法しかないのでしょうか・・
お礼
やはり出来ないんですね。 言われてみるとその通りです。 ありがとうございました。 URL、参考にさせていただきます。