C语言输入\输出缓冲规则

stdin

1.一个进程只有一个stdin,所有的输入共用这个stdin。
2.如果stdin中的数据较少,不符合目前规则(规则见后续)所需的,那么程序会阻塞等待输入。
3.已经读走的数据会从stdin消失。
4.在键盘上敲击的每个字符,都会在转换后放在stdin里。
5.敲击回车的时候,stdin中的数据将会提交给程序处理。

stdout

输出有个缓存区,当这个缓存足够大的时候就会输出(缓存有界)。

规则

%d:先处理掉所有不可见字符(回车、空格等),遇到数字或者负号开始转换,遇到第一个非数字字符停止转换,返回转换后的结果。
如果在需要数字字符的时候遇到了非数字字符,则转换失败。

%f:%f的基本规则同%d,只是数字录入的时候,第一次碰见‘.’的时候不会终止读取。

%c:存在读取失败,目前stdin中的第一个字符是什么就拿什么。

%s:先处理所有不可见的字符,然后拿到空格为止
例如:连续两个%s的情况。如果第一个字符是回车或者空格,则第二个字符吃这个回车或空格

总结

总而言之,这个输入缓冲规则就像是一群人(%d,%f,%s,%c)在排队打饭,锅里如果还有饭,这些人就拿走。锅里没饭就等待。%d和%f会挑食。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值