scanf()的缓存问题

总结了一下,发现buffer对scanf中标准输入影响较大的是scanf(%c)也就是字符的标准输入;

 

标准输入 eg. scanf("%s") . scanf("%d") 等都会在输入时先判断缓存区buffer中的数据是否是指定类型,如果不是,则要求输入;

而scanf("%c") 虽然也会判断,只是不论是空格合适回车,在buffer中的保存形式都是ascll码,所以,只要buffer中有值,一般都会直接赋给%c了,而不会再要求输入;

又因为,scanf 时,会将空格或者是回车读入buffer中;

所以,如%c是紧接在其他scanf的后面,那么就会使输入进字符中的是空格或者回车而不是想要的。

所以一般%c前面如果有其他的scanf,那么会多一个%c,使buffer中的空格或者回车先去掉。

而cin不会出现这样的问题,不会使回车或者空格放在buffer中,这也就是gets()与scanf(%s)之间的区别。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值