2011-11-28 207 views
1

只要输入不是X,循环将继续要求输入并打印出A或B.在while循环比较CHAR

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还是其他任何输入,都会在新行中输出“Enter Input:B”。任何人都可以告诉我如何解决这个问题,谢谢!

这里是发生了什么:

回车输入:一个

一个

回车输入:它始终打印该行后的输出B/,如何 我可以摆脱它??/

输入输入:一个

输入输入:乙

输入输入:乙

输入输入:乙

输入输入:b

回答

4

为了忽略换行符的scanf应该有可能是:

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

而且你可能想后printf权到stdout刷新:

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

你需要吃newline字符:

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