打印ASCII图表

Printing ascii chart

本文关键字:图表 ASCII 打印      更新时间:2023-10-16

我试图打印完整的ASCII图表。同时,我在Tutorialsschool.com网站上看到了此代码。

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

看起来很完美,但问题在于它不是位置打印符号(我正在使用Code :: blocks IDE),例如7,8,9,10和32。我真的很困惑为什么它不打印在这些位置的值。它给在线编译器上提供了一些怪异的输出。这是代码::块的问题。可能是打印这些ASCII符号的另一个程序。

我真的很困惑为什么它不在这些位置打印值。

因为这些代码是不可打印的ASCII代码。注意标准ASCII代码只有7位(即128个字符) - 其中一些是不可打印的(控制代码) - 因此您不希望您能够打印它们(例如,您可以打印Bell 0x07吗?)

http://www.asciatible.com/


正如Mohit Jain指出的那样,您确实需要使用isprint函数来检查字符是否可以在标准C语言环境上打印,然后将其打印出来 - 非常方便的功能。

您可能有兴趣知道并非所有的ASCII字符都是可打印

例如,十进制0至31是不可打印的ascii值。

请参阅此引用,其中提到了相同的。

也就是说,对于托管环境,main()的预期签名至少为int main(void)

只有ASCII字符的子集可打印。有些是控制字符,例如线馈,铃等。

详细信息:ASCII定义为代码0至127。循环仅需要 for(i=0;i<=127;i++)对于完整的ASCII图表

-

OTOH,也许要打印所有char的完整图表。当打印char时,首先将它们转换为unsigned char。因此,让我们创建所有unsigned char的图表。

注意:使用ASCII进行字符代码0至127 in 非常常见,但不由C。

指定

要确定unsigned char是否是可打印,请使用isprint()函数。对于其他人,打印一个逃生序列。

#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'