我目前正在学习C程序,并且有一个简单的程序可以读取Integer Input,其代码如下所示:
int main()
{
int x;
printf("%d",scanf("%d",&x));
/* Suppose that input value given
for above scanf is 45 */
return 1;
}
Ouput是1
。
当我尝试这段代码时:
int main()
{
int x, z;
printf("Enter The Value: ");
int y = scanf("%d %d",&x, &z);
printf("The value is %d", y);
/* Suppose that input value given
for above scanf is 20 789 */
return 1;
}
Ouput是2
。
这是我的问题,为什么scanf
只返回number of input
而不是用户输入的value
?有人可以解释它如何工作吗?
答案 0 :(得分:1)
scanf()
可以处理多个输入-在第二个示例中,它正在将两个输入读入x
和z
中。输入可以是许多不同的类型,但是必须将函数的返回值指定为特定类型,在这种情况下为int
。
由于scanf()
将用户输入放入参数中指定的变量中,因此也无需将其作为函数值返回。
返回输入数量可以告诉您输入的成功程度。如果格式字符串中有两个%d
,但仅返回1
,则表示第二个输入看起来不像整数。将仅填写x
,不会更新z
。因此,您应该检查返回值是否等于您尝试解析的输入数量,并在输入不匹配时报告问题。