c++ 清空控制台_C 语言清空输入缓冲区的几个手段

先观察如下代码和运行情况:

9987f116bb2d615d78ce66c70195e532.png

按照控制台提示,输入 value 的值之后,本该能够按照提示继续输入 choice 的值。但是你会发现程序直接跳过了 choice 的输入。而且 choice 原本的值是 'a',最后变成了换行符(即'n')。

造成这种现象的原因是 C 语言的输入缓冲区的机制。

什么是 C 语言的输入缓冲区呢?

输入分为两种,一种称为无缓冲输入(或直接输入),即你每输入一个字符,程序就读一个字符,并可立即使用这个字符;另一种称为缓冲输入,即将你一次性输入的所有字符先收集并存到缓冲区(buffer)里,在你按下 Enter 键之后将这些字符作为一个“块”全部给到程序。

为什么要使用缓冲区呢?

首先,把若干个字符作为一个块来传输比逐个发送字符更节约时间。其次,如果用户打错了字符,可以在输入区域修正,确认无误后按 Enter 键传入正确的输入。如果你使用的是无缓冲输入,那么一旦你打错字,这个错字符立刻就被传入到程序里了,这个时候想要改正就比较麻烦了。无缓冲输入一般在交互性强的程序里使用(比如实时游戏)。

缓冲分为两类:完全缓冲 I/O 和行缓冲 I/O。完全

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值