当前位置: 移动技术网 > IT编程>开发语言>C/C++ > C/C++中printf()和scanf()函数的返回值

C/C++中printf()和scanf()函数的返回值

2020年10月27日  | 移动技术网IT编程  | 我要评论
本部分来自博客:C语言中的scanf和printf函数的返回值问题(1)scanf函数原型:int scanf(const char *format, … );scanf()函数是格式化输入函数,它从标准输入设备(键盘) 读取输入的信息。其调用格式为: scanf("<格式化字符串>",<地址表>);函数 scanf() 是从 标准输入流 stdio 中读内容的通用 子程序 ,可以读入全部固有类型的数据并自动转换成机内形式。scanf函数返回值:scanf()函数返回.

本部分来自博客:C语言中的scanf和printf函数的返回值问题

(1)scanf函数原型:int scanf(const char *format, … );

scanf()函数是格式化输入函数,它从标准输入设备(键盘) 读取输入的信息。
其调用格式为: scanf("<格式化字符串>",<地址表>);

函数 scanf() 是从 标准输入流 stdio 中读内容的通用 子程序 ,可以读入全部固有类型的数据并自动转换成机内形式。

scanf函数返回值:
scanf()函数返回成功赋值的数据项数,读到文件末尾出错时则返回EOF。

如:scanf("%d,%d", &a, &b);
如果a和b都被成功读入,那么scanf的返回值就是2
如果只有a被成功读入,返回值为1
如果a和b都未被成功读入,返回值为0
如果遇到错误或遇到end of file,返回值为EOF。
且返回值为int型.

(2)printf函数原型及返回值:
printf 函数的一般形式为:int printf(const char *format,[argument]);
以上形式,我们在Visual C++里输入“printf”将会看到。
说明printf函数类型为整型,其返回值是整型值。

其值实际为printf控制输出的字符数。

printf()函数实际上是将所有参数按字符输出,根据该函数的参数1(const char *format),我们不难理解。

int a, b;
a = printf( "gelin\n" ); //a的值为6,
b = printf( "the value of printf is:%d", a ); //b的值为24
printf( "\n%d\n", b );
程序将输出:
gelin
the value of printf is:6
24

本部分来自例子1:

平时真不怎么关注printf的返回值,一般是直接调用printf格式化输出,今天做腾讯的笔试题发现了一个知识漏洞,特此记录。
首先,题目是这样的:

int f(int a, int b, int c)
{
    return 0;
}
int main(){
    return  f(printf("a"),printf("b"),printf("c"));
}

问上述程序的输出结果,自以为printf调用成功返回0,而且参数传递顺序是栈式(先进后出,即调用顺序和参数顺序相反),所以输出结果为”cba”,没想到蒙对了答案,但是这么理解是错误的,错在对printf函数的返回值上。

通过测试结果的规律,大胆的预测一下printf的返回值:
返回格式化数据替换后整个字符串的总字符个数。(\n为转义字符)


本部分来自例子2:

有一次在注册皮皮书屋的时候,要求输入的验证码是一段C程序的输出结果,主要是关于printf函数的,源程序如下:

#include <stdio.h>
 
int main()
{
 
int i=43;
 
printf("%d\n",printf("%d",printf("%d",i)));
 
return 0;
}

没有,这个程序的输出结果就是:4321

因为printf()函数的返回结果是一个int型的值,返回的是打出出来的字符数。所以:

第一个(最里面的)printf("%d",i)打印出的结果是:43

第二个printf("%d",printf("%d",i))打印出的结果是:2(因为43是两个字符)

第三个(最外面的)printf打印的结果是:1(因为2是一个字符)

根据结果输出顺序的先后,最后打印的结果是:4321

注意:经常在printf里出现的换行符“\n”也是一个字符。


本文地址:https://blog.csdn.net/qq_32642107/article/details/109305652

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网