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 回答