检测C中的上下箭头键
我是C编程的初学者,我正在构建一个命令行解释器。我正在使用检测C中的上下箭头键,c,terminal,C,Terminal,我是C编程的初学者,我正在构建一个命令行解释器。我正在使用fgets()从终端获取用户输入,并尝试使用箭头键创建命令的“历史记录” void receiveInput() { char *input = malloc(256); printf(">> "); fgets(input, 256, stdin); if ((strlen(input) > 0) && (input[strlen(input) - 1] == '\n'))
fgets()
从终端获取用户输入,并尝试使用箭头键创建命令的“历史记录”
void receiveInput() {
char *input = malloc(256);
printf(">> ");
fgets(input, 256, stdin);
if ((strlen(input) > 0) &&
(input[strlen(input) - 1] == '\n')) {
input[strlen(input) - 1] = '\0';
}
processInput(input);
free(input);
receiveInput();
}
上面的函数构建输入,问题是我必须在尝试获取用户输入的同时捕捉按键。有没有办法做到这一点?我已经找到了一些我试图理解的解决方案,但在这个层次上,它们似乎对我来说太难了 实现这一点的简单方法是使用GNU Readline库(或其BSD等价物Editline库)。另请注意,与Scheme不同,对
receiveInput
的尾部调用可能会耗尽C中的堆栈。请看一下哪些已为历史提供了接口。键盘是操作系统特有的东西,因此如何读取它们将取决于您是在运行Windows、Mac还是Linux。是否还有其他方法,就像一个可以帮助我不使用图书馆的变通方法@LeeDanielCrocker我正在使用Linux。Linux使用终端,通常为字符I/O设置。如果要检测键盘事件,必须将终端置于特殊模式并使用IOCTL等。“curses”(和ncurses)库通常用于使这更容易和更可移植。