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

标签 c input scanf fgets arrow-keys

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

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

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

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

最佳答案

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

关于支持箭头键的标准输入跨平台输入解决方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47600881/

相关文章:

c - 如何在结构中打包结构

c - 华氏度到摄氏度程序改进和选择输出

c - C 中小于 1 的舍入值?

c - 使用 char 和 scanf 时输入值无效 "%hhu"

css - 输入内的填充打破宽度 100%

c - 使用 scanf 连续读取字符串和 int 时遇到问题

c - 为什么 scanf() 会导致此代码中的无限循环?

c - 如何要求GCC完全展开此循环(即,剥离此循环)?

php - 如何将类属性设置为 Symfony2 表单输入

c - If/else 语句仅适用于整数。