【发布时间】:2012-07-10 02:48:07
【问题描述】:
我有一个检测键盘事件的 C 程序,但我需要知道实现输入缓冲区的最佳技术和一个简单的 getch 函数来检索缓冲区中最旧的字符。
【问题讨论】:
我有一个检测键盘事件的 C 程序,但我需要知道实现输入缓冲区的最佳技术和一个简单的 getch 函数来检索缓冲区中最旧的字符。
【问题讨论】:
一种方法是使用circular buffer。您创建一个固定大小的数组并具有两个索引,一个读取索引和一个写入索引。每次触发键盘事件时,您将值放在写入索引和增量处。当调用getch 函数时,您从读取索引中读取并递增它。如果任一索引超出数组的大小,则它会重置到开头。
如果读索引和写索引相等,则没有键在等待。如果写索引刚好在读索引之前,则缓冲区已满,需要删除键盘事件。
如果你不想要一个“完整”的缓冲区,它会变得更加复杂。
【讨论】: