gpt4 book ai didi

c - C 中的制表符补全(readline 库)

转载 作者:太空宇宙 更新时间:2023-11-04 02:16:20 26 4
gpt4 key购买 nike

我一直在努力让制表符完成工作。我很困惑,不知道该怎么做。您能否看看我的代码并告诉我如何修复它。

顺便说一下,我使用了 rl_attempted_completion_function 因为我是从在线教程中获得它的,但它是一个 C++ 函数。不做改动可以用什么函数代替呢

谢谢

   static char** completion( const char * text , int start,  int end){
char **matches;
matches = (char **)NULL;

if (start == 0)
matches = rl_completion_matches ((char*)text, &generator);

return (matches);
}

char* generator(const char* text, int state) {
int index, len;
char *comm;
if (!state) {
index = 0;
len = (int)strlen (text);
}

while ( (*comm = newEnv[index])) {
index++;
if (strncmp (comm, text, len) == 0)
return ((comm));
}
return NULL;
}

int main (int argc, char * argv[]) {

using_history();
rl_readline_name = basename(argv[0]);

rl_attempted_completion_function = completion;

while ( readline(">> ")!= NULL )
rl_bind_key('\t',rl_complete);

return 0;
}

最佳答案

我注意到了这一点:

char *comm;
...
while ( (*comm = newEnv[index])) {

我不知道 newEnv 的返回类型是什么,但你可能想把它放在 comm 中,而不是 *comm ,因为您没有将 comm 指向任何地方。

关于c - C 中的制表符补全(readline 库),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7237654/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com