【问题标题】:scanf function in a while loop [duplicate]while循环中的scanf函数[重复]
【发布时间】:2017-12-27 18:29:49
【问题描述】:

以下代码的输出对我来说非常奇怪。谁能解释我为什么会这样?

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

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

}

输出

【问题讨论】:

标签: c while-loop scanf


【解决方案1】:

在您的scanf 语句之后写下此语句。

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

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

【讨论】:

    猜你喜欢
    • 2016-10-08
    • 2017-06-28
    • 2013-11-23
    • 2021-08-10
    • 2014-10-27
    • 1970-01-01
    • 2020-02-16
    • 2021-10-17
    • 1970-01-01
    相关资源
    最近更新 更多