C 跨平台解决方案,支持箭头键输入标准DIN?
我知道有很多类似的问题,但我找不到足够清楚的答案 我正在写一些类似于C语言中的一个小的原始shell的东西。我不断地询问用户输入命令,并对其进行处理。要阅读一行,我使用C 跨平台解决方案,支持箭头键输入标准DIN?,c,input,scanf,fgets,arrow-keys,C,Input,Scanf,Fgets,Arrow Keys,我知道有很多类似的问题,但我找不到足够清楚的答案 我正在写一些类似于C语言中的一个小的原始shell的东西。我不断地询问用户输入命令,并对其进行处理。要阅读一行,我使用fgets()。它工作得非常好(尽管每次我都要删除\n),但是如果我想在键入内容时移动光标,原始键代码会被放入控制台。我不仅不能使用向上和向下箭头键获取以前的命令,而且我也无法纠正任何打字错误,而不使用退格删除所有内容,直到输入错误,然后再次输入内容 使用scanf()时也会发生同样的情况,因此fgets()不是罪魁祸首。有趣的是
fgets()
。它工作得非常好(尽管每次我都要删除\n
),但是如果我想在键入内容时移动光标,原始键代码会被放入控制台。我不仅不能使用向上和向下箭头键获取以前的命令,而且我也无法纠正任何打字错误,而不使用退格删除所有内容,直到输入错误,然后再次输入内容
使用scanf()
时也会发生同样的情况,因此fgets()
不是罪魁祸首。有趣的是,当我在Windows上试用时,它工作得很好。此外,正如我所说,例如,退格键实际上删除字符
我知道我可以使用
ncurses
,但我更愿意找到另一个优雅的解决方案…您需要一个像readline
这样的库不要陷入“可移植代码”中。
您可以使用
条件包含
在不同的平台上保持兼容。C标准基于面向流的输入和输出。没有不涉及第三方库的跨平台解决方案。不过,假设您愿意使用第三方库ncurses
可能是你最好的选择。还有Gnu Readline。@LeednielCrocker这不是只在Linux/UNIX上工作吗?我正在尝试编写在Windows上也能工作的可移植代码