支持箭头键的标准输入跨平台输入解决方案?

Cross platform solution for input on stdin with arrow keys support?

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

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

使用 scanf() 时也会发生同样的情况,因此 fgets() 不是罪魁祸首。有趣的是,当我尝试 Windows 时它工作得很好。另外,正如我所说,例如退格键实际上会删除字符……

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

您需要像 readline 这样的库。
不要纠结于“可移植代码”。
您可以使用 Conditional Inclusion 来保持在不同平台上的兼容性。