百科说的不够准确,应该根据不同的情况来判断,加入你用无缓冲的IO写的话,就没有缓冲区这么一说了。
关于你的两个问题,前提是在用有缓冲的命令行交互,并且是使用的有缓冲的IO, 。
我说下我的理解:
输入的字符先放着键盘的缓冲区,当你摁下回车的时候,stdin接受键盘缓冲区的数据,形成一个流数据,然后供其他调用来使用。
1、getChar()是一个宏,这个宏就是getc(stdin),所以getc从stdin里面去取字符。
2、我理解的键盘缓冲区和stdin流不是一个东西,当然,你可以认为stdin流是某种缓冲区。但他不是键盘缓冲区。我觉得stdin像一个文件,linux里面stdin,stdout都是特殊的文件描述符。
我觉得缓冲区的字符通过基础的IO(内核调用或者其他什么调用,这个我真心不清楚,linux内核应该有相关实现),写进stdin中。
温馨提示:答案为网友推荐,仅供参考