while循环中的scanf函数

时间:2017-12-27 18:29:50

标签: c while-loop scanf

以下代码的输出对我来说非常奇怪。任何人都可以解释一下为什么它的表现如此?

#include<stdio.h>
int main()
{
    int i=0;
    char ch='a';

    while(ch!='q')
    {
       scanf("%c",&ch);
       printf("\t%d\n",i);
       i++;
    }

}

输出

enter image description here

1 个答案:

答案 0 :(得分:0)

scanf声明之后写下此声明。

while( getchar() != '\n' );  /* flush to end of input line */

下次循环执行时,它会自动从standard input buffer中获取字符,因此您必须在每scanf后清除它,以便它不可用于下一个{{1} }}。这是由我上面的代码行完成的。