我遇到了以下问题:
int main(int argc, char **argv){
while(1){
char command[25];
scanf(" %25[^\n]s", command);
printf("Command '%s'\n", command);
}
return 0;
}
现在,每当我在控制台中键入内容时,它就会向我显示一条消息,其中包含我刚刚键入的内容。
但是,如果我使用向上箭头键将最后一条命令从内存中取出,则发送的命令是
^ [[A
这将导致光标被程序向上移动。
现在该如何解决?
我想触发内存中的最后一条命令。
预先感谢!
答案 0 :(得分:4)
这实际上是您要求的非常重要的事情。幸运的是,有一个可修复它的库:GNU Readline library。但是,请注意其许可。最后我听说这是实际的GPL,因此如果您使用它,您自己的程序也必须是这样。 NetBSD有一个名为libedit的库,该库似乎声称在限制较少的许可证下可以做很多相同的事情。
以下是有关阅读热线的更多帮助:https://eli.thegreenplace.net/2016/basics-of-using-the-readline-library/
如果您可以忍受不要将其直接集成到自己的程序中的想法,那么有一个方便的实用程序,称为rlwrap,它可以为最终用户透明地提供至少一些好处。