为什么scanf总是返回1?
问题描述:
#include <stdio.h>
int main() {
int days = scanf("%d", &days);
printf("%d", days);
return 0;
}
无论结果如何,结果都是1。为什么scanf总是返回1?
7
1
我已经使用scanf很多次了,从来没有遇到过这种情况。这里的交易是什么?
答
这是正确的,因为scanf()
返回成功匹配和转换元素的数量。考虑你的情况正确的输入,您的每一次输入经过转换,所以你能看到值1
注意点,scanf()
不返回扫描的价值本身,它存储在传递的值论据。
引用C11
,章§7.21.6.4
[...]的
scanf
函数返回 号码输入项目的分配,其可以是少于规定的,或甚至零,在该 早期匹配失败的事件。
+0
谢谢。字符数限制 – user3643077
+2
@ user3643077:您必须在其他地方以不同的方式执行此操作。 –
答
scanf的返回类型是指示它是否成功读取一个整数。
这将做你期待什么
#include <stdio.h>
int main() {
int days = 0;
scanf("%d", &days);
printf("%d", days);
return 0;
}
你刚刚从'scanf'功能**返回码**重挫days'的'值。 – t0mm13b
'scanf'的文档不清楚吗? – Olaf
确实要阅读手册页的时间? –