gpt4 book ai didi

c - Linux C 控制台应用程序未在 "keyup"上使用先前的命令

转载 作者:太空狗 更新时间:2023-10-29 11:40:37 25 4
gpt4 key购买 nike

我遇到了以下问题:

int main(int argc, char **argv){
while(1){
char command[25];
scanf(" %25[^\n]s", command);
printf("Command '%s'\n", command);
}
return 0;
}

现在,每当我在控制台中输入内容时,它都会向我打印一条消息,其中包含我刚刚输入的内容。
但是如果我使用向上键从内存中取出最后一个命令,发送的命令是

^[[A

这导致光标被程序向上移动。
现在我该如何解决这个问题?
我希望触发内存中的最后一个命令。
提前致谢!

最佳答案

这实际上是您要求的非常重要的事情。幸运的是,有一个库可以修复它:GNU Readline library .不过,请注意其许可。最后我听说,它是真正的 GPL,因此如果您使用它,您自己的程序也必须是 GPL。 NetBSD 有一个名为 libedit 的库,它似乎声称可以使用限制较少的许可来做很多相同的事情。

这里有一些关于 readline 的更多帮助:https://eli.thegreenplace.net/2016/basics-of-using-the-readline-library/

如果您能接受不将其直接集成到您自己的程序中的想法,那么有一个名为 rlwrap 的实用程序很方便。 ,这至少为最终用户提供了一些透明的优点。

关于c - Linux C 控制台应用程序未在 "keyup"上使用先前的命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52680742/

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