2016-12-12 12 views
5

完全なASCIIチャートを印刷しようとしていました。私はこのコードをtutorialsschool.comウェブサイトで見ました。このよう7,8,9,10および32としてアスキーチャートを印刷

#include<stdio.h> 
void main() { 
int i; 
for(i=0;i<=255;i++){ 
    printf("%d->%c\n",i,i); 
} 
} 

それは完璧に見えるが、問題は、それは場所のシンボルを印刷していないということです(私はコード::ブロックIDEを使用しています)私は本当に混乱していますなぜそれらの場所に値が表示されないのですか?また、オンラインコンパイラでは奇妙な結果が出ています.Code :: Blocksの問題です。これらのASCII記号を印刷するための他のプログラムは、おそらくどのようなものでしょうか。

+6

[Cでの印刷文字とそのASCIIコード]の可能な重複(http://stackoverflow.com/questions/1472581/printing-chars-and-their- –

+4

[man isprint](https://linux.die.net/man/3/isprint) –

+2

32は空白文字、9はタブなどです あなたは少なくとも ' %c 'はもう少し見ています。 – SurDin

答えて

3

すべてのASCII文字がで印刷可能であるとは限りません。です。

たとえば、10進数の0〜31は印刷できないASCII値です。

this referenceを参照してください。

つまり、ホストされた環境では、main()の予想される署名は、少なくともint main(void)です。

+1

_All_ ASCII文字は印刷できません_ – qxz

+2

はい、すべてではありません。 –

+0

@ q-l-pはすべて印刷可能ではなく、すべて印刷可能ではありません。 –

6

私は実際にそれらの場所に値を印刷しない理由が混乱しています。

これらのコードは印刷できないASCIIコードであるためです。標準的なASCIIコードは7ビット(つまり128文字)しかありません。そのうちいくつかは印刷不可能(制御コード)なので、印刷することはできません(例えば、Bell 0x07を印刷できますか?)

http://www.asciitable.com/


そしてMohitジャイナ教が指摘したように、あなたは本当にキャラクターがそれをプリントアウトする前に、標準のCロケールに印刷可能であるかどうかを確認するためisprint機能を使用する必要がある - 非常に便利な機能を。

2

ASCIIのサブセットのみが印刷可能です。 ASCIIループのみ完全なASCIIチャートためfor(i=0;i<=127;i++)を必要とする0〜127のコードのために定義されています。いくつかは

詳細は...、このような改行、ベル、などとしてcontrol charactersです。

-

OTOH、おそらく1は、すべてのcharの完全なチャートを印刷したいです。 charが印刷されると、最初にunsigned charに変換されます。だから、すべてunsigned charのグラフを作成しましょう。

注意:非常に一般的ではなく、unsigned char印刷可能あるかどうかを決定するためにC.

によって指定された、isprint()関数を使用127に文字コード0のためのASCIIを使用します。他の場合は、エスケープシーケンスを出力します。

#include<ctype.h> 
#include<limits.h> 
#include<stdio.h> 

int main(void) { 
    unsigned char i = 0; 
    do { 
    printf("%4d: ", i); 
    if (isprint(i)) { 
     printf("'%c'\n", i); 
    } else { 
     printf("'\\x%02X'\n", i); 
    } 
    } while (i++ < UCHAR_MAX); 
    return 0; 
} 

サンプル出力

0: '\x00' 
    1: '\x01' 
    ... 
    7: '\x07' 
    8: '\x08' 
    9: '\x09' 
    10: '\x0A' 
    ... 
    31: '\x1F' 
    32: ' ' 
    33: '!' 
    34: '"' 
    ... 
    65: 'A' 
    66: 'B' 
    67: 'C' 
    ... 
126: '~' 
127: '\x7F' 
... 
255: '\xFF'