【发布时间】:2021-12-30 09:52:40
【问题描述】:
我正在研究 C 中的标准 I/O 流和标准 I/O 函数。
我发现关于标准输入中的缓冲区有两个不兼容的解释。
- 每当为每个字符按下键时,这些数据都会立即存储在缓冲区中。当你按下回车键时,那些被传输到处理
- 只有在输入字符串并按下回车后,数据才会存储在缓冲区中。存储在缓冲区中的数据会在进程需要时获取。
你能告诉我上面解释的哪一点是正确的吗? 我真的很困惑。
【问题讨论】:
-
缓冲区不止一个,所以两种说法都是正确的。
-
我猜按回车后不一定。字符立即存储在缓冲区中(这是默认行为,但可能会更改)并且进程应该能够使用缓冲区中的数据。
-
我的意思是标准输入流的缓冲区。我想知道那个缓冲区是如何工作的
-
想象一下你按住一个键几秒钟......重复的“键”是如何生成/处理的?是键盘硬件电路吗?键盘本身是否有内部缓冲区?在键盘本身,在键盘连接到计算机的硬件级别,在操作系统连接到硬件的内核级别,在操作系统和应用程序之间的中间级别,可能有缓冲区,..., ...也许,很可能,以上所有。