プロが教える店舗&オフィスのセキュリティ対策術

ASCIIコード表を出力するプログラムを作成中なのですが、
1~32の’BEL’等が実行されてしまいコマンドプロンプト上に表示させることが出来ません。

現在、出力はcntをループさせ、
printf("%d | %c", cnt, cnt);
の様にしております。

よろしくお願いします。

A 回答 (4件)

>表示させることが出来ません。



・決めごと(*)ですから・・・。逆に、「表示」できてしまうと、その文字に決めた(割り当てた)「制御」が働かなくなってしまう。
・例えば、cで printf( "\n" );としても改行(\n)してくれないと困りますよね。

★printf()文は、コンソールに【コード】を送っているだけ、たまたまそのコードが、割り当てた「図形文字」だった場合、その【文字】を「表示」する、と考えればいいのでは・・・。

>現在、出力はcntをループさせ、printf("%d | %c", cnt, cnt);の様にしております。

・参考URLのように、「制御文字」部分は、printf( "[%3d][%02X]\n", cnt, cnt);と10進と16進で【コード】そのものを「表示」させたら如何でしょう。

(*)
私は、EBSDICコードが文字コードとしての初物でしたが、まったくASCIIコードとは異なります。一企業(IBM)が決めただけ・・・。

参考URL:http://e-words.jp/p/r-ascii.html
    • good
    • 0
この回答へのお礼

やはり出来ないんですね。
言われてみるとその通りです。

ありがとうございました。
URL、参考にさせていただきます。

お礼日時:2007/12/13 18:26

制御文字等はいずれにせよまともに表示することができません。


isprint関数で文字が表示可能かどうかを調べ、真ならそのまま表示、偽なら16進表示にするなどの工夫が必要です。
    • good
    • 0

iscntrl()

    • good
    • 0

cntの値が32から126までを表示するようにすればどうでしょう

    • good
    • 0
この回答へのお礼

回答ありがとうございます。
やはりその方法しかないのでしょうか・・

お礼日時:2007/12/10 17:50

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