文章目录
字符输入/输出和输入验证
8.2缓冲区
回显用户输入的字符后立即重复打印该字符是属于无缓冲(或直接)输入,即正在等待的程序可立即使用输入的字符。大部分系统属于缓冲输入,用户输入的字符被收集并储存在一个被称为缓冲区的临时存储区,按下enter键后,程序才可使用用户输入的字符。
缓冲区的意义在于,把若干字符作为一个块进行传输比逐个发送这些字符节约时间。另一方面,如果用户输错字符,可以直接修正,当最后按下enter键时,传输的是正确的输入。
虽然缓存输入的好处很多,但是某些交互式程序也需要无缓冲输入。例如,在游戏中,希望按下一个键就执行相应的指令。
缓冲分为两类:完全缓冲I/O和行缓冲I/O。完全缓冲输入指的是当缓冲区被填满时才刷新缓冲区(内容被发送至目的地),通常出现在文件输入中。行缓冲I/O指的是在出现换行符时刷新缓冲区。键盘输入通常是行缓冲输入。