我可以在printf()函数中使用scanf()函数给出定义的输出吗?如果是,那么请为下面的简单代码解释输出:
#include <stdio.h>
#include <conio.h>
int main()
{
int a;
printf("%d",scanf("%d",&a));
return 0;
}
答案 0 :(得分:6)
不完全是。 scanf
返回解析的项目数,但您可以这样做:
printf("%d", (scanf("%d", &a), a));
使用逗号运算符放弃scanf
的结果并使用a的值。
答案 1 :(得分:2)
printf
和scanf
只是功能。您可以像上面一样使用一个函数的输出作为另一个函数的参数。
正如@MichaelT在评论中指出的那样,scanf
的返回值不是从键盘读取的值。如果您查看man page,则会显示:
这些函数返回成功匹配和分配的输入项的数量,可以少于提供的数量,或者在早期匹配失败的情况下甚至为零。
换句话说,在您的示例中,如果输入了有效整数,它将返回1
,如果未输入有效整数,则返回0
。
答案 2 :(得分:1)
易于理解
在C中,printf()返回在输出上成功写入的字符数,scanf()返回成功读取的项目数。
例如,以下程序打印akp 3
int main()
{
printf(" %d", printf("%s", "akp"));
getchar();
}
无论字符串用户输入,程序下面都会打印1。
int main()
{
char a[50];
printf(" %d", scanf("%s", a));
getchar();
}
答案 3 :(得分:1)
实际上,您可以使用printf()输出函数的返回值。
#include <stdio.h>
#include <conio.h>
int main()
{
int a;
printf("%d",scanf("%d",&a));
return 0;
}
如果输入数字。它将输出1.这意味着scanf()函数已成功执行,返回值为1.
如果你输入一封信。它将输出0.这意味着函数指令的执行失败:此条件是匹配失败。返回值为0。
答案 4 :(得分:0)
当scanf
返回成功完成的转化次数时,示例程序将打印1
,0
或-1
,具体取决于提供的内容input(1
如果输入的开头可转换为整数,0
表示非整数输入,-1
表示输入错误。