gpt4 book ai didi

c - 自动完成视觉效果不佳(readline.h)

转载 作者:行者123 更新时间:2023-11-30 17:01:44 27 4
gpt4 key购买 nike

我想在我创建的 shell 上添加自动完成功能。我无法输入完整的代码,但我可以告诉你我的 shell 正在工作!所以我尝试使用 readline 函数来实现自动完成,但结果并不是那么好(请参阅我尝试过的注释中的代码):自动完成有效,但问题是:1. 我需要按两次 Enter 才能立即执行命令。 2. 我需要输入两次命令(如“ls”)才能执行它!你能帮我解决这个问题吗?谢谢你:)

#include <readline/readline.h>
#include <readline/history.h>
#include <stdlib.h>
#include <stdio.h>
#include "includes/ft_sh1.h"

int main(int ac, char **av, char **envp)
{
char *line;
t_env *e = NULL;
char *add;

if (!(e = (t_env *)malloc(sizeof(t_env))))
return (0);
e->envp = env_cpy(envp, 0, 0);
init_env(e);
while (1)
{

--> My question is only about this part below <--

ft_printf("shell$> ");

// add = readline( "shell ");
// add_history(add);
// printf("%s", add);

--> My question is only about this part above <--


get_next_line(0, &line);
get_pwd_env(e);
e->cmd = get_cmd(e, line);
if (ft_strcmp(line, "exit") == 0)
exit(0);
else if (ft_strncmp(e->cmd[0], "cd", 2) == 0)
cd_cmd(e);
else
ft_execute(av, line, e);
}
}

最佳答案

当您取消注释相关代码部分时,您仍然可以调用

        get_next_line(0, &line);

在你的程序中,难怪你需要输入两个命令行。

关于c - 自动完成视觉效果不佳(readline.h),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36875794/

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