gpt4 book ai didi

c - 在 c 中使用 readline() 编辑命令

转载 作者:太空宇宙 更新时间:2023-11-04 00:54:33 25 4
gpt4 key购买 nike

我必须实现一些 CLI 功能,现在我正在尝试使用 readline() 以便用户可以编辑或执行他们的命令。到目前为止,它的工作原理是它允许用户输入他们的命令并滚动浏览历史记录。当用户尝试编辑命令时。光标以某种方式设法传递命令并进入提示符,例如"desktop r1234|5$: ls"其中 "desktop r12345(sp)$: "是显示工作目录和根目录的提示;和“|”是光标。光标应停在“$”和“ls”之间,即“desktop r12345$:| ls”。showWrkngDir() 方法只是像普通终端一样显示提示。

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

showWrkngDir();
static char *line_read = (char *)NULL;
using_history();
rl_readline_name = basename(argv[0]);
if (line_read)
{
free (line_read);
line_read = (char *)NULL;
}

while(strcmp((line_read = readline ("")) , "EXIT") != 0)
{
if (line_read && *line_read)
add_history (line_read);

tokenize(line_read);
showWrkngDir();
}

return 0;
}


void showWrkngDir()
{
char curDir[MAX_COMMAND_SZ];
char *env;

getcwd(curDir, sizeof(curDir));
env = (char *)getenv("USER");

printf("%s ",basename(curDir));

printf("%s(sp)$ ", env);
}

最佳答案

我相当确定 readline 想要显示提示本身,因为有时它需要删除整个屏幕线并从头开始重新绘制。这种情况尤其会在浏览历史记录时发生,而且在编辑溢出到下一行的命令时,或者在按下 ^L 时也会发生。

将你的提示作为 readline() 的参数,

关于c - 在 c 中使用 readline() 编辑命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7265276/

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