Использование цикла while для печати таблицы Ascii с 10 символами в строке - PullRequest
0 голосов
/ 22 июня 2019

Я на самом базовом уровне программирования на 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 ]

3 голосов
/ 23 июня 2019

следующий предложенный код

  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. , не печатает этикетки
2 голосов
/ 22 июня 2019

Изменяя предыдущий ответ, нехорошо печатать символы не 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');
}
1 голос
/ 22 июня 2019

Так что если вы хотите после каждых 10 символов новую строку, этот код должен работать.

int main() {

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

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

       i = i + 1;

   }    

   exit(0);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...