为什么scanf总是返回1?

时间:2017-03-31 17:20:53

标签: c scanf

#include <stdio.h>    

int main() {
    int days = scanf("%d", &days);
    printf("%d", days);
    return 0;
}

结果是1,无论如何。

7
1

我已经多次使用scanf并且从未遇到过这种情况。这是什么交易?

2 个答案:

答案 0 :(得分:3)

这是正确的,因为scanf()返回成功匹配和转换元素的数量。在您的情况下考虑正确的输入,每次输入通过转换时,您都可以看到值1。

注意,scanf() 不会返回扫描值本身,它会将值存储在传递的参数中。

引用C11,章节§7.21.6.4

  

[...] scanf函数返回   分配的输入项目数量,可以少于提供的数量,甚至为零   早期匹配失败的事件。

答案 1 :(得分:0)

scanf的返回类型是指示它是否成功读取整数。

这将满足您的期望

#include <stdio.h>    

int main() {
    int days = 0;
    scanf("%d", &days);
    printf("%d", days);
    return  0;
}