各常见常见输入的缓冲区

*关于scanf,cin,getline,gets()缓冲区的小结:
看了很多大佬的博客,但是对于我这个新手来说很多看不懂,不过这位博主的文章个人感觉比较接地气,比较易懂:

这里是引用

https://blog.csdn.net/as14569852/article/details/77502990

先了解缓冲区。
除了一整行一整行读的操作(如gets(),getline()),
其余的操作(如:cin,scanf,包括getchar())都会将空格符或者回车符当作是结束符放在缓存区(放在缓存区好像是为了提高cpu效率,)
停止读入之后再从缓冲区读入,遇到空格或者回车符停,停止后结束符仍然在缓冲区,若要避免错误,一个好方法是用一个getchar()将结束符读取,这样就不会造成错误了
可以认为gets和getline之后的缓存区是干净的,其余操作会将结束符留在缓存区,造成读入不是自己想要的。

一个简单方法,用getchar()将缓存区的结束符读掉!
注意:列如:char op;op=getchar();这样也会留一个结束符在缓存区。
在op=getchar()后面在加一个“getchar()”这样就可以解决啦!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值