scanf与getchar的区别

一·前言

说到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’给清理了。
总结:相信你看完我真的介绍,一定有了更充分的理解,这么聪明的你,赶紧点赞关注走一波,一起加油努力吧!

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值