首页 > 解决方案 > 使用 scanf 返回值验证输入类型失败

问题描述

我想通过使用scanf的返回值检查c中此代码中的所有输入是否都是double类型:


#include <stdio.h>

int main()
{
    double a,b,c;
    int x = scanf("%lf %lf %lf", &a, &b, &c);
    printf("%d", x);
}

但这就是我得到的:

标签: c

解决方案


scanf一旦任何转换失败,就停止处理输入,从左到右,它不会尝试处理剩余的输入。

所以当你进入

b b 2.8

尝试进行第一次%lf转换时失败。由于没有进行任何转换,它返回0.

当你进入

2 x 2.1

它成功转换2为 a double,但失败了x,所以它不处理2.1并返回1


推荐阅读