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

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

c++ 清空控制台_C 语言清空输入缓冲区的几个手段_第1张图片

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

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

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

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

为什么要使用缓冲区呢?

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

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

你可能感兴趣的:(c++,清空控制台,c++清空控制台,c++清空输入缓冲区,c语言,fgets函数,去除换行符,c语言eof,c语言eof怎么结束输入)