如何避免在while循环中打印'\ n'的ASCII值?

时间:2013-01-28 00:25:18

标签: c

我的任务是获取输入,打印出字符和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");
    }        
}

2 个答案:

答案 0 :(得分: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");
        }
    }

答案 1 :(得分: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");
    }        
}