我可以在printf()函数中使用scanf()函数给出定义的输出吗?

时间:2013-03-18 16:52:24

标签: programming-languages c coding-style

我可以在printf()函数中使用scanf()函数给出定义的输出吗?如果是,那么请为下面的简单代码解释输出

#include <stdio.h>
#include <conio.h>
int main()
{
  int a;
  printf("%d",scanf("%d",&a));
  return 0;
}

5 个答案:

答案 0 :(得分:6)

不完全是。 scanf返回解析的项目数,但您可以这样做:

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

使用逗号运算符放弃scanf的结果并使用a的值。

答案 1 :(得分:2)

printfscanf只是功能。您可以像上面一样使用一个函数的输出作为另一个函数的参数。

正如@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返回成功完成的转化次数时,示例程序将打印10-1,具体取决于提供的内容input(1如果输入的开头可转换为整数,0表示非整数输入,-1表示输入错误。