4

私の仕事は、入力を取得し、文字とASCII値を出力して、それぞれ8対1行で表示することです。入力するすべての入力に対して、改行文字の値も取得しているので、印刷したくありません。

これは私のコードです:

#include <stdio.h>

int main()    
{       
    char ch;
    int count = 0;

    printf("please type an input:\n");
    while ((ch = getchar()) != '#')          
    {
        ++count;           
        printf("%c=%d ", ch, ch);
        if (count%8 == 0) printf("\n");
    }        
}
4

2 に答える 2

3

getchar()最初のものを読んだ直後に別のものを使用することができます:

  while ((ch = getchar()) != '#')
  {
       getchar();  // To eat the newline character
       // Rest of code
  }

または、scanf()を使用して、ループを同等に書き直すことができます。

   while (scanf(" %c", &ch)==1)
    {
        if(ch != '#')
        {
          ++count;
          printf("%c=%d ", ch, ch);
          if (count%8 == 0)
             printf("\n");
        }
    }
于 2013-01-28T00:28:28.063 に答える
2
int main()    
{       
    char ch;
    int count = 0;

    printf("please type an input:\n");
    while (1) {
        ch = getchar();
        if (ch == '#') break;
        if (ch == '\n') continue;         

        printf("%c=%d ", ch, ch);
        if (!(++count%8)) printf("\n");
    }        
}
于 2013-01-28T00:43:08.153 に答える