我想在命令行应用程序上自动完成a,但就像在bash中一样,您可以使用可以完成命令的选项卡键。但是getchar()似乎等到收到newline char才开始读取任何字符之前。
scanf似乎以相同的方式工作。
有什么办法可以一次扫描一个字符,无论它们是空格还是控制字符?
我希望能够通过char读取char作为输入构建命令,然后一旦收到tab char,我将尝试查找如何在我的应用程序中完成和打印完整命令。
不要重新发明轮子。
使用其他项目用来构建命令行:为您实现该作业的库。
许多CLI提示都取决于GNU读取线,如果有点混乱,我认为这很好。另外,这是GPL,因此取决于您是否喜欢。
我会看着亚麻。这很轻巧,如果您决定自己确实想自己实现用户界面,而不是包含一个或两个文件,请执行此操作,但请查看似乎是相当简洁的参考实现。警告:到目前为止,我自己还没有使用过。但是,正如他们的示例中可以看出的那样,API很简单。
流行的替代方案是libedit/editline。
您需要gnu readline库。每当用户按键(在您的情况下,'t'
)时,请使用rl_bind_key()
函数添加文件名完成处理功能。
如果您尝试滚动自己的阅读线样式功能,您将受到伤害的世界。
(如果您在Windows上。)