我正在寻找一个等待用户按键的控制台功能。我希望它像 Pascal 的 readkey;就像在仅控制台解决方案中一样。没有 GUI 库/图形库/窗口库/WinApi 调用 (Windows)。它应该是跨平台的,并且(最好)是 C 标准库或 C++ 类库的一部分。那么有没有这样的函数/类方法等?
问问题
11311 次
5 回答
6
C 标准库没有“键盘缓冲区”的概念。输入/输出主要是基于行的(按下 ENTER 时触发)。
你有几个选择:
- 使用像ncurses这样的外部库
- 更改终端缓冲策略
setvbuf()
并使用fgetc()
(如果您没有更改缓冲策略,则等待 ENTER)
于 2011-09-18T11:36:26.793 回答
2
据我所知,您的项目没有便携式解决方案。在 Windows 中,您可以使用具有直接从控制台获取字符<conio.h>
的函数的标题。getch()
如果您在 Linux 中,那么您可以使用库ncurses。
于 2011-09-18T11:37:00.030 回答
1
如果您在 Windws 运行时环境中,您可以使用非标准 C 函数 kbhit()。并且有一个适用于 Windows 的 C 语言 Linux 等价物kbhit( )
。该函数做你想做的事:它会告诉你是否在没有读取字符的情况下输入了键盘字符;或者,如果输入了一个字符,则将读取并向您发送一个字符。你可以在这里找到它:
http://pwilson.net/sample.html
向下滚动到标题为“Linux 和 Unix 的单字符键盘输入”的段落
高温高压
于 2011-09-18T11:40:41.693 回答
0
考虑_getch?
于 2011-09-18T11:28:45.447 回答
0
简单的:
getchar();
从字面上看,相当于readkey()
C# 中的 for。
于 2021-05-07T14:20:54.643 回答