使用scanf时输出奇怪

时间:2011-04-22 09:32:28

标签: c++ c scanf

#include <cstdio>  

int main()  
{  
    int i;
    printf("%d", scanf("%d", &i));
}

无论我输入什么号码,我都会得到输出:

1

为什么会这样?

3 个答案:

答案 0 :(得分:11)

成功时,scanf功能

  

返回成功读取的项目数。

如果发生匹配故障,此计数可以匹配预期的读数或更少,甚至为零。 如果在成功读取任何数据之前输入失败,则返回EOF

试试这个:

printf("%d",scanf("%d%d",&i,&i));

答案 1 :(得分:4)

输出scanf的结果,该结果不是您输入的数字,而是成功读取的项目数。您输入的号码存储在i中。要输出它,你必须写一个额外的行:

#include <cstdio>  

int main()  
{  
   int i;
   if (scanf("%d",&i) == 1)
       printf("%d", i);
}

答案 2 :(得分:0)

scanf()返回成功时读取的项目数。这里只读取一个数字,因此无论数字如何,每次输出都是1。