我知道有很多类似的问题,但是我找不到足够清晰的答案。
我正在写一些类似于C语言中原始外壳的东西。我一直在查询用户输入要处理的命令。要读取一行,我使用fgets()
。它的工作原理非常好(尽管我每次都必须删除\n
),但是如果我想在键入内容时移动光标,则会将原始键代码放到控制台中。我不仅不能使用向上和向下箭头键来获取先前的命令,而且还不能纠正任何错别字,除非在错字之前删除所有带有退格键的内容,然后再重新键入内容。
使用scanf()
时也会发生同样的情况,因此fgets()
不是罪魁祸首。有趣的是,当我在Windows上尝试时,它可以正常工作。另外,正如我所说,例如,退格键实际上是删除字符…
我知道我可以使用ncurses
,但是我宁愿找到另一个优雅的解决方案…
您需要一个类似readline
的库。不要纠缠于“便携式代码”。您可以使用Conditional Inclusion
在不同平台上保持兼容。