在while循环中比较char

时间:2011-11-28 05:58:11

标签: c loops while-loop

只要输入不是x,循环就会继续询问输入,并打印输出A或B.

int main (void){

    char input;

    while( input != 'x'){

        printf("Enter Input:");

        scanf("%c", &input);

        if (input == 'a'){

            printf("A \n");
        }

        else{

            printf("B\n");
        }

   }

    return (0);
}

问题在于,每当我输入输入后,它会打印输出,并且无论我输入a或b还是其他任何输入,它都会在新行中打印出“输入输入:B”。任何人都可以告诉我如何解决这个问题,谢谢!

以下是发生的事情:

  

输入输入:a

     

A

     

在输出后输入输入:B / 它总是打印这一行,如何   我可以摆脱它吗? /

     

输入输入:a

     

A

     

输入输入:B

     

输入输入:b

     

     

输入输入:B

     

输入输入:b

3 个答案:

答案 0 :(得分:4)

为了忽略换行符,scanf应该是:

scanf(" %c", &input);
       ^

此外,您可能希望在printf之后立即刷新标准输出:

printf("Enter Input:");
fflush(stdout);

答案 1 :(得分:1)

你需要吃一个newline字符:

scanf("%c", &input);
  while((ch=getchar())!='\n');

答案 2 :(得分:0)

错误是因为从输入中读取了换行符。

你也可以参考这个:Why doesn't getchar() wait for me to press enter after scanf()?