上一章我们学习了printf,这一章我们就来看一看scanf:
在C语言中,C函数库包含了多个输入输出函数,scanf是其中最常用的一个,因为它可以读取各种格式的数据。
一般来讲,我们从键盘输入的都是单个的字符,那怎么把这些单个的字符组合成你想要输入的结果呢,这就是scanf所做的事情,它可以将你所输入的内容转换称你所选的格式的内容。说起来scanf和printf很想,它就像printf的逆操作。
我们来回顾下printf的格式(printf的p是小写的,上一章和这一章的配图有问题,主要是word文档首字母自动大写一时没注意,这里纠正下):
![9bee767c0d2aa08183e7e7c9a15a6134.png](https://i-blog.csdnimg.cn/blog_migrate/09b99c860a243630071da1b0c3d4bf06.jpeg)
我们再来看下scanf的格式:
![b7efacefaedc595952463be4ffdca881.png](https://i-blog.csdnimg.cn/blog_migrate/e9f97ad5ed4b9e90771c1485f83c2d08.jpeg)
还是来看一段一个简单的代码:
![3ac5b9076ae2f0c102c1b4eb34227fe2.png](https://i-blog.csdnimg.cn/blog_migrate/53156cb7e009ecd103b8a0b7d8a8269a.jpeg)
这里我用红色箭头标示了特别需要注意的地方,就是这个分隔符,必学要注意,很多人前面程序里用的是逗号,后面输入的时候用了空格,导致程序出错。这里必须是一致的,程序里是什么,那么运行时也应该输入那个分隔符。
大家看到在scanf中的控制字符和printf中的控制字符基本是一致的,如果不清楚这些控制字符是什么意思,可以看一下我上一篇文章<>,里面有比较详细的介绍。
在scanf和printf格式化控制字符之外,有时候我们可能还需要一些特别长度输出等等,列如我们可以用*(星号)来控制输出的字符滞后多少个字符输出,如下图:
![d02bd5e7351832ee701dd8265a551b3e.png](https://i-blog.csdnimg.cn/blog_migrate/fc1a0e9a28f919ea21f0c064ce125528.jpeg)
下表列出了一些常用的修饰符:
![b4bf3e1a7223434f8e1d1be902daeef5.png](https://i-blog.csdnimg.cn/blog_migrate/68b8101cddeffe4d3e98c9563c1b05fa.jpeg)
这里只写了一些,还有许多的的修饰符,大家可以去查一下。
最后,只是看这些其实并没什么用,还需要大量的实践操作,也就是上机练习啦,所以我们来个作业吧,大家可以去自己练习下。
题目1:编写一个程序,要求输入姓名,并按照以下方式打印出来:
a)、把姓名引在双引号中答应出来;
b)、在宽度为20个字符的字段内打印姓名;
c)、在宽度为20个字符的字段内左对齐打印;