我想通过使用scanf的返回值来检查c中此代码中所有输入是否均为double类型:
#include <stdio.h>
int main()
{
double a,b,c;
int x = scanf("%lf %lf %lf", &a, &b, &c);
printf("%d", x);
}
但这就是我得到的:
答案 0 :(得分:2)
格式字符串由一系列指令组成,这些指令描述 如何处理输入字符的顺序。如果处理一个 指令失败,不再读取任何输入,并且scanf()返回
因此
对于案例1。
scanf
在检测到第一个说明符不匹配时将停止读取。
对于案例2。
scanf
在检测到第二个说明符不匹配时将停止读取。
答案 1 :(得分:2)
scanf
一旦任何转换失败就停止处理输入,从左到右,它不会尝试处理剩余的输入。
因此,当您输入
b b 2.8
尝试进行第一个%lf
转换时失败。由于尚未完成任何转换,因此它将返回0
。
输入时
2 x 2.1
它成功地将2
转换为double
,但在x
上失败,因此它不处理2.1
并返回1
。