这是C语言中的一个问题。
如何直接读取键盘缓冲区中的数据?
我想直接访问数据并将其存储在变量中。变量应该是什么数据类型?
我需要它用于我们研究所目前正在开发的操作系统。它被称为 ICS-OS,我不太清楚具体细节。它在 x86、32 位机器上运行(我们在 Linux 盒子中的 QEMU 上运行它)。这是 Google 代码的链接http://code.google.com/p/ics-os/ http://code.google.com/p/ics-os/。我希望这已经足够了。
操作系统不支持 conio.h 库,因此 kbhit 不是一个选项。
这确实依赖于平台。
如果这是针对 Windows,则对“键盘缓冲区”最直接的访问是使用 WM_INPUT 和 GetRawInputData。看使用原始输入 http://msdn.microsoft.com/en-us/library/ms645543%28v=vs.85%29.aspx with 键盘和鼠标的示例 http://msdn.microsoft.com/en-us/library/ms645546%28v=vs.85%29.aspx.
另一种 DOS/Windows 特定方式是conio.h http://en.wikipedia.org/wiki/Conio.h函数 getch() / kbhit()。
便携式图书馆被称为Curses http://en.wikipedia.org/wiki/Curses_%28programming_library%29并具有适用于 Linux 和 Windows 的端口。
但是,由于您的目标是非常特定的操作系统,因此您需要检查该操作系统的文档。
最直接的平台无关方式是getchar http://www.cplusplus.com/reference/clibrary/cstdio/getchar/ / scanf http://www.cplusplus.com/reference/clibrary/cstdio/scanf// 从 stdin 读取的任何内容,但 stdin 是行缓冲的,因此在按下 Enter 之前您不会获得任何数据。您也许可以更改缓冲设置,但同样,这取决于平台,并且在某些平台上可能无法实现。查看相关讨论setbuf(stdin,NULL)的 http://www.velocityreviews.com/forums/t439102-setbuf-stdin-null-cant-work-why.html.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)