C ---使用箭头键支持输入`stdin`的跨平台解决方案?

时间:2017-12-01 20:16:28

标签: c input scanf fgets arrow-keys

我知道有很多类似的问题,但我找不到足够明确的答案。

我正在写一些类似于C中的原始shell的东西。我不断地询问用户输入命令,我处理这些命令。要阅读一行,我使用fgets()。它的工作非常好(我每次都必须删除\n),但是如果我想在键入内容时移动光标,则将原始密钥代码放入控制台。我不仅不能使用向上和向下箭头键来获取以前的命令,我也无法更正任何拼写错误而不删除所有的退格键,直到输入错误然后再输入东西。

使用scanf()时会发生同样的情况,因此不是罪魁祸首。有趣的是,当我尝试使用Windows时,它运行正常。另外,正如我所说,例如退格键实际上删除了字符......

我知道我可以使用ncurses,但我会找到另一个优雅的解决方案...

1 个答案:

答案 0 :(得分:1)

您需要一个像readline这样的图书馆 不要纠缠于“便携式密码” 您可以使用Conditional Inclusion与不同平台兼容。