扫描所有输入的字符,直到看到标签字符

时间:2017-09-02 22:13:28

标签: c command-line

我想在命令行应用程序a上自动完成,但是在bash中你可以使用tab键来完成命令。但getchar()似乎要等到收到换行符之后才开始读取任何字符。

scanf似乎以同样的方式工作。

有什么方法可以一次扫描一个字符,无论它们是空格还是控制字符?

我希望能够在输入构建命令时通过char读取char,然后一旦tab char收到,我将尝试查找如何在我的应用程序中完成并打印完整命令。

2 个答案:

答案 0 :(得分:3)

您需要GNU Readline Library。只要用户按下某个键(rl_bind_key(),就可以使用'\t'功能添加文件名完成处理功能。

如果您尝试使用自己的readline样式函数,那么您将面临一个受伤的世界。

If you are on Windows。)

答案 1 :(得分:3)

不要重新发明轮子。

使用其他项目用于构建命令行的内容:为您实现该作业的库。

许多CLI提示取决于GNU readline,我觉得这很好,如果有点混乱和沉重。而且,它是GPL,所以取决于你是否喜欢。

我会调查linenoise。它非常轻量级,如果您决定真的想要自己实现用户界面而不是包含一个或两个文件,那么,确实如此,但是看一下相当简洁的参考实现成为。警告:到目前为止,我自己还没有使用它。但是,API非常简单,可以在他们的example中找到。

一种流行的替代方案是libedit/editline