scanf 和 getchar

scanf()函数是格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量中。
例如输入三个整数“%d%d%d”,输入时可以用一个回车符作为每两个输入的数之间的间隔。
scanf()在读取数值时会跳过空格、制表符和换行符
但在读取字符时,不会跳过这些符号
  在这里插入图片描述

getchar()函数的功能是接收一个从键盘上输入的字符

先看下面的scanf输入三个字符
在这里插入图片描述

运行时为什么到了 b的时候输入不了呢?
当输入完a的值 ‘ * ’ 按下enter键,相当于输入了两个字符:‘ * ’ 和 ‘ \n ’
‘ \n ’被b接收
然后程序再向下走,等着你输入c的值
你输完了 ‘ + ’ ,被c收到
所以显示的时候,会按顺序显示a,b,c的值:a= ‘ * ’ ,b= ‘ \n ’,c= ‘ + ’

最后,如果在scanf后面加上一句 getchar();

当你输入一个字符回车时,字符放到a里面,接着的 \n 被getchar()接收掉
此时,在输入缓冲区里就不存在换行符 \n 了

再输入一个‘ * ’ ,回车
同样 b 收到的是 ‘ * ’  ,换行 \n 被getchar()接收掉

再输入一个‘ @ ’ ,回车
同理,c收到‘ @ ’ ,换行 \n 被getchar()接收掉

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dotdotyy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值