Ale*_*lex 6 c shell command-line autocomplete
我想知道如何用 C 实现一个程序,它可以自动完成您在命令行中输入的命令或文本。例如,假设您的程序提示用户输入文件名。大多数情况下会使用scanf()
or else 来做到这一点。然后在命令行中用户会像please input the file name:_
.
假设shakespeare.txt
在同一目录中有一个。现在我已经输入shakes
,然后我希望计算机shakespeare.txt
为我自动完成,就像大多数程序在用户点击Tab
. 如何实施?
编辑:为了更清楚,另一个例子:
如果您grep
在命令行中使用,例如grep -i "shakespeare" shakespeare.txt
,在您完成shakespeare.txt
自己之前,如果您只是使用Tab
,则会出现一些候选人。
当我尝试在使用类似功能时提示用户输入时,如何实现我的程序以使其拥有这些实用程序scanf()
?
因为在 C 中,没有可移植的解决方案可以在不按 Enter 键的情况下知道您在提示中键入的内容,因此您需要逐个字符地读取。
注意:您可能需要使用 getche() 来回显该字符。
您需要定义一个缓冲区,在其中存储用户按下的所有字符,直到用户按下 Enter 键或按下 Enter 键。当您找到 \t 时,您将分析缓冲区中的内容并据此做出决定。
以下代码是一个过于简化的示例:
char c;
int i = 0;
do {
c = _getche();
if (c == '\t') {
// Autocomplete
// Print the rest of the word here
}
else {
buff[i++] = c;
}
} while (c != '\n' && c!='\r');
buff[i] = '\0'; // Let's keep the standard
Run Code Online (Sandbox Code Playgroud)