前言:
学习c语言编程,必不可少的操作就是键盘输入与屏幕输出。今天我想讲讲自己对scanf与printf使用的看法
一、scanf与printf:
1.scanf()函数:
int scanf ( const char * format, ... );
函数的功能:从标准输入中读取格式化数据
从 stdin 读取数据,并根据参数格式将它们存储到附加参数所指向的位置(目标对象的地址)。
其他参数应指向格式字符串中相应格式说明符指定的类型的已分配对象。
scanf的使用需要引 头文件:#include <stdio.h>
示例1:
#include <stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);//此时我就需要从键盘上输入一个数,然后把它存放到变量n里(&:是取地址符)
return 0;
}
值得注意的是,输入参数的时候一定要加上取地址符,这是初学者很容易忘的。
&n:读作取地址n,意思就是把你输入的数据存放到n的地址中
示例2:
#include <stdio.h>
int main()
{
int m = 0;
int n = 0;
scanf("%d %d", &m,&n);//此时我就需要从键盘上输入一个数,然后把它存放到变量n里(&:是取地址符)
printf("%d,%d\n", m, n);
return 0;
}
仔细观察上方代码,我定义了两个变量,我在输入的时候,中间的输入格式中间加了个空格。
双引号内部,就是格式化你输入的数据。
意思也就是说你在代码中怎么样格式化的数据,你在 控制面板 的 输入时候也要一模一样的按照格式化的模式 进行输入,要不然程序就无法很好地运行。
这张图片是我按照正确的方式来运行的:
这张图片是个错误示范:
此图片的意思是说,我本来想要打印2和3,但是由于我2和3当时没有用空格分开,然后我一直输入3,一直输入3,然后直到按下了回车键,他才给我打印出来23和3的结果。
以下是scanf 的格式说明符遵循以下原型:
大家可以参考了解一下
另外需要注意的是:
1.在c语言程序中,我们从键盘上输入的都是字符,比如说我们在键盘上输入123,但是,,它表示的并不是数字 123,而是字符 ‘1’、字符 ‘2’ 和字符 ‘3’。所以我们需要格式化你输入的字符。
2. 比如说上方表格中的%d,它在scanf中,就表示将你输入的字符格式化化为十进制数字。从键盘上输入字符 123,然后%d将这三个字符转化成十进制数 123。
3.在这里我只是单独举了一个例子,其他符号还有其他的作用。
4.还有一点就是最好不要在scanf中添加中文。
2.printf()函数:
int printf ( const char * format, ... );
此函数的功能:将格式化数据打印到标准输出
将按格式指向的 C 字符串写入标准输出 (stdout)。如果 format 包含格式说明符(以 % 开头的子序列),则格式后面的其他参数将被格式化并插入到生成的字符串中,替换其各自的说明符。
格式化输出,请参考表格:
格式说明符还可以包含子说明符:标志、宽度、.precision 和修饰符(按此顺序),它们是可选的,并遵循以下规范:
最重要的也是最容易被遗忘的点来啦:
printf的返回值:
1.成功后,将返回写入的字符总数!!!(参见链式访问)
2.如果发生写入错误,则设置错误指示器(ferror)并返回负数。
3.如果在写入宽字符时发生多字节字符编码错误,errno 将设置为 EILSEQ 并返回负数。
示例 printf的链式访问:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
printf("%d", printf("%d", printf("%d", 43)));
return 0;
}
小伙伴们可以猜一猜这里面打印的最终结果是什么呢?
就有人奇怪了,为什么打印的结果是4321啊?
因为如果printf返回值返回成功的话,它会返回 你 写入字符的总个数
我们来剖析一下这个程序:最内层是打印了43。等到下一步他开始打印的时候,他写入了几个字符==就是上一步打印的4和3,总共打印了两个字符,所以说他会返回2。在走到最后一步他要打印的时候,他上一步写入了几个字符==就是上一步返回的2呀,所以说就打印了一个字符,最终就返回1。(所以说最终的结果就是4321)
那么好了好了,关于printf的返回值 重要的事情说三遍:
printf返回成功后,将返回写入的字符总个数!!!
printf返回成功后,将返回写入的字符总个数!!!
printf返回成功后,将返回写入的字符总个数!!!
OK,关于printf和scanf的介绍就简单介绍到这里了.
如果对你有帮助,记得点赞👍+关注哦!
我的主页还有其他文章,欢迎学习指点。关注我,让我们一起学习,一起成长吧!