使用while循环打印每行10个字符的Ascii表

时间:2019-06-22 12:31:24

标签: c

我的C语言编程非常基础:我可以打印出ASCII表。

问题是每行打印出10个ASCII字符,例如:

characters 1-10 (newline)
characters 10-20... 
and so on up to 255
int main() {

   int i;
   while (i <= 255) {
       printf("%c", i);
       i = i + 1;
   }    

   exit(0);
}

3 个答案:

答案 0 :(得分:3)

以下建议的代码

  1. 干净地编译
  2. 执行所需的功能
  3. 还标记每行
  4. 利用isprint()中的ctype.h来确定是输出当前字符还是输出“。”。

现在,建议的代码:

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


int main( void ) 
{
    for( int i = 0; i<256; i++ )
    {
        if( !( i%10 ) )
        {
            printf( "\n%3d thru %3d ", i, i+9 );
        }

        if( isprint( i ) )
        {
            putchar( i );
        }
        else
        {
            putchar( '.' );
        }
   }    
}

以上代码的输出为:

000 thru 009 ..........
010 thru 019 ..........
020 thru 029 ..........
030 thru 039 .. !"#$%&'
040 thru 049 ()*+,-./01
050 thru 059 23456789:;
060 thru 069 <=>?@ABCDE
070 thru 079 FGHIJKLMNO
080 thru 089 PQRSTUVWXY
090 thru 099 Z[\]^_`abc
100 thru 109 defghijklm
110 thru 119 nopqrstuvw
120 thru 129 xyz{|}~...
130 thru 139 ..........
140 thru 149 ..........
150 thru 159 ..........
160 thru 169 ..........
170 thru 179 ..........
180 thru 189 ..........
190 thru 199 ..........
200 thru 209 ..........
210 thru 219 ..........
220 thru 229 ..........
230 thru 239 ..........
240 thru 249 ..........
250 thru 259 ......

您可能想要修改建议的代码,例如:

  1. 它不输出初始空白行
  2. 它将最后一个标签停在255,而不是259
  3. 不打印前导0'
  4. 不打印标签

答案 1 :(得分:2)

根据先前的答案,由于控制台(终端)的行为可能很奇怪,因此打印非ASCII字符是不好的。改为打印其他内容-例如点,

#define MINCHAR 32
#define MAXCHAR 127

int main() {

   int i = 0;
   while(i<=255) {

       putchar((i >= MINCHAR && i <= MAXCHAR) ? i : '.');
       if(!(i % 10) && i) putchar('\n');
       i = i + 1;
   }    
   putchar('\n');
}

答案 2 :(得分:1)

因此,如果您希望每隔10个字符换一行,则此代码应该有效。

int main() {

   int i = 0;
   while(i<=255) {

       printf("%c", i);
       if(i % 10 == 0)
       printf("\n");

       i = i + 1;

   }    

   exit(0);
}