如何检查用户输入是否在C中为double?

时间:2018-10-28 00:10:36

标签: c

通常我会使用这样的东西:

    double value;
if (scanf("%lf", &value) == 1)
    printf("It's float: %f\n", value);
else
    printf("It's NOT float ... \n");

但是这次我需要一次读取两个数字

scanf("%lf %lf", &x, &y);

如何检查?

2 个答案:

答案 0 :(得分:1)

正如@SRhm在评论部分中提到的,您只需使用:

scanf("%lf %lf", &x, &y) == 2

从用户输入中获取两个数字。 scanf - C++ Reference中的引号说明了该函数的返回值:

  

成功时,该函数返回参数的项目数   列表已成功填写。

scanf将返回一个整数,代表从用户输入中成功读取的变量数量。

答案 1 :(得分:0)

Some programmer dude有一个good point。不幸的是,如果仅第二个输入是双精度输入,则此技术将不起作用,但是您希望将两者与非双精度输入的情况区分开。为了区分不同的情况,您可能需要使用fgets()函数将输入作为字符串输入,然后using sscanf() on the string multiple times将字符串分别解析为不同的部分。

详细研究C标准库,您会发现许多很棒的库函数可以帮助您完成许多事情。