Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用C自动完成目录名_C_Linux_Autocomplete - Fatal编程技术网

用C自动完成目录名

用C自动完成目录名,c,linux,autocomplete,C,Linux,Autocomplete,我有一个C代码,它提示用户输入目录名列表,它只使用普通的scanf()来接收输入并继续。现在我想为目录名提供自动完成功能(就像bash一样)。假设用户输入/home/a并按TAB键-它显示以“a”开头的可用用户目录列表。如何实现这一点 scanf不适用于任何类型的自动完成编辑,甚至不适用于超出内核烹调模式终端驱动程序提供的基本级别(基本上只是退格)的交互式编辑。如果您想进行更高级的交互式输入,您需要更改终端模式,以便获得每个关键事件并自己处理它们,或者您可以使用像readline这样的库来为您执

我有一个C代码,它提示用户输入目录名列表,它只使用普通的scanf()来接收输入并继续。现在我想为目录名提供自动完成功能(就像bash一样)。假设用户输入/home/a并按TAB键-它显示以“a”开头的可用用户目录列表。如何实现这一点

scanf
不适用于任何类型的自动完成编辑,甚至不适用于超出内核烹调模式终端驱动程序提供的基本级别(基本上只是退格)的交互式编辑。如果您想进行更高级的交互式输入,您需要更改终端模式,以便获得每个关键事件并自己处理它们,或者您可以使用像
readline
这样的库来为您执行此操作。

您使用
scanf
进行用户输入?伙计,你离这样的工作还差得很远。@joachim pileborg,我总是在发布之前尝试一些东西,我的firefox最近关闭的标签历史显示为“”和/rlman_2.html#SEC36。刚刚发布的查询假设有人有更好的教程或github。顺便说一下,请参阅库,它内置了实际的制表符完成部分。你只要提供名单就行了。最后一部分请参见和。@melpomene,hihi:)是的,scanf到目前为止帮助了这段简单的代码,现在希望对其进行一些改进;请注意,它的许可证是GPL,而不是LGPL。因此,如果他发行原始海报,他将不得不将自己的代码作为免费的GPL-ed软件发布。我不会称之为神奇的库。它有很多令人讨厌的问题,比如全局状态和在故障条件下无法保持健壮性。但它很受欢迎,也很容易使用。我相信,如果许可证是一个问题,有一些非版权保留的替代方案也可以做大致相同的事情,但我不确定它们在其他方面的比较。