使用scanf时输出奇怪

Strange output on using scanf

本文关键字:输出 scanf 使用      更新时间:2023-10-16
#include <cstdio>  
int main()  
{  
    int i;
    printf("%d", scanf("%d", &i));
}

无论我输入的是什么数字,我都会得到输出:

1

为什么会这样?

如果成功,则scanf函数

返回成功读取的条目数。

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

试试这个:

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

您将输出scanf的结果,该结果不是您输入的数字,而是成功读取的项数。输入的数字存储在i中。要输出它,必须再写一行:

#include <cstdio>  
int main()  
{  
   int i;
   if (scanf("%d",&i) == 1)
       printf("%d", i);
}

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