为什么这个scanf返回false?

时间:2010-10-13 12:25:04

标签: c++ c

此scanf应始终返回true,直到我输入无数字输入,但此scanf从不执行循环。为什么呢?

示例输入:

10.0 5.0
Press [Enter] to close the terminal ...

代码:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char** argv)
{
    float a, b;
    while ( scanf("%f %f", &a, &b) == 1 )
    {
        printf("%f\n", (a - b) / (a * b));
    }
    return (EXIT_SUCCESS);
}

3 个答案:

答案 0 :(得分:7)

scanf返回读取的项目数,在本例中为2。

答案 1 :(得分:0)

scanf返回成功扫描的项目数。在您的情况下,它将返回2表示成功。

答案 2 :(得分:0)

这是因为scanf会返回2,这是成功阅读的项目数。

要继续阅读,直到遇到EOF,您可以执行以下操作:

while ( scanf("%f %f", &a, &b) != EOF )