scanf与getchar的区别
目录
- 一·前言
- 二·scanf在输入上的特点
- 三·getchar在输入上的特点
- 四·借助两幅图理解二和三的解释
- 五·应用列举
- 1·第一题
- 二·第二题
一·前言
说到scanf与getchar,相信很多初学者和我一样都很困惑它们的具体区别是什么,下面是我总结的认为比较有用的方面。
二·scanf在输入上的特点
当我们运用scanf(库函数)这个函数需要输入字符(串)或数字时,scanf并不会直接读取我们输入的东西,而是从键盘的输入缓冲区(键盘上输入的东西都会先进入输入缓冲区然后再被读取)读取,scanf会一直读取遇到直到遇到空格或‘\n’(回车)时停止,这也就使得scanf有时并不能单独解决问题,需要用getchar 来弥补。scanf如果读取正常,返回的是读取到的个数,如果读取失败,返回EOF。
三·getchar在输入上的特点
首先,getchar(库函数)只能用来读取单个字符,如果读取正常,则返回那个字符,否则返回EOF。并且getchar返回的是字符的ASCII值(int型)。一般用到getchar的时候会用到循环语句,之所以说getchar能弥补scanf是因为它能够读取空格和‘\n’,当scanf读取中遇到空格或回车(’\n‘)时就不再往下读取。所以需要通过用getchar的循环语句来读取这一串数字。
四·借助两幅图理解二和三的解释
五·应用列举
1·第一题
1.题目:利用scanf与getchar输入密(123456),输入密码后再确认一次密码,选择Y为确认,N为确认失败。
2.错解:一般人思路如下图
错误原因:当输入一串数字后,按了一下回车(’\n’),但是scanf只读取\n之前的数。所以输入缓存区留了一个’\n’,被gerchar读取,所以等不到你输入东西,就直接确认失败了。
3:修改,需要把’\n’去除。如图:
二·第二题
1.说明:这是只用到了一次getchar,就如上面提到的,我们一般会用到getchar的循环,所以举一个需要用到循环的例子
2.题目介绍:输入一串密码,然后Y/N确认或取消。如图
3.解释:这里scanf读到第一个空格便停止了,但是你为了后面能识别你输入的Y/N,你需要清理缓存区,于是循环getchar把后面输入的’ dc ef’给清理了。
总结:相信你看完我真的介绍,一定有了更充分的理解,这么聪明的你,赶紧点赞关注走一波,一起加油努力吧!
北 海: 操作符写的很详细,支持大佬
网络豆: 支持博主优质文章,讲解的非常详细
花想云: 支持博主,感谢分享
花想云: 支持博主,感谢分享
初阶牛: 操作符写的很好,学到了