首页 > 解决方案 > 使用 while 循环打印每行 10 个字符的 Ascii 表

问题描述

我处于 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);
}

标签: c

解决方案


以下建议的代码

  1. 干净地编译
  2. 执行所需的功能
  3. 还标记每一行
  4. 使用isprint()fromctype.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. 不打印标签

推荐阅读