跨平台解决方案,可在标准输入上使用箭头键支持?

问题描述 投票:3回答:1

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

我正在写一些类似于C语言中原始外壳的东西。我一直在查询用户输入要处理的命令。要读取一行,我使用fgets()。它的工作原理非常好(尽管我每次都必须删除\n),但是如果我想在键入内容时移动光标,则会将原始键代码放到控制台中。我不仅不能使用向上和向下箭头键来获取先前的命令,而且还不能纠正任何错别字,除非在错字之前删除所有带有退格键的内容,然后再重新键入内容。

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

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

c input scanf fgets arrow-keys
1个回答
3
投票

您需要一个类似readline的库。不要纠缠于“便携式代码”。您可以使用Conditional Inclusion在不同平台上保持兼容。

© www.soinside.com 2019 - 2024. All rights reserved.