我有一个关于Readline Library的问题。
我想知道Readline是否可以在C程序中自动完成目录中的文件名?
我已经搜索过了,只看到命令名完成。
先谢谢你。
编辑:我复制了一个数组中的文件名.我使用的函数是:在文件rline. c中,char *command_generator,char**tab_completion(const char *text,int start,int end),void initialize_readline()。我想我必须使用char * filename_completion_function(char *text,int state)?当我输入“tab”键时,它什么也没调用,bind()似乎也没有被使用。你知道我是否使用了正确的功能吗?谢谢!!
3条答案
按热度按时间0qx6xfy61#
文件名补全是readline的一个内置特性,你不需要填充文件名列表等。下面的程序在readline 6.1中默认允许文件名补全。
字符串
存在定制此机制的方法,例如你可以指定一些像
rl_filename_quoting_function
和rl_filename_dequoting_function
这样的函数来帮助readline为你的应用程序提供正确的文件名引用。我认为你需要指定你的readline版本,如果这对你不起作用。
/etc/inputrc
含量也应该检查。你有bash
,它使用readline吗?文件名补全是否按预期工作?无论如何,info readline
是一个非常好的文档,前提是您可以使用info
本身:)如果没有,请查看Programming with GNU Readline。mftmpeh82#
要使用readline库,请在编译器中指定-lreadline。下面的代码段可以用
字符串
eyh26e7m3#
我对你所指的readline感到困惑,但有人向我指出,你指的是GNU库中的那个。
有关这方面的示例,请参阅Fredrik的GNU Readline库链接。
要将其应用于您的需要,而不是您看到的
string cmd[]
,您需要使用当前目录中所有文件名的数组,其余代码应该大致相同。