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

Linux C console application not using previous command on "keyup"

我遇到了以下问题:

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. Be aware about its licensing, though. Last I heard, it's actual GPL and therefore your own program needs to be that, too, if you use it. NetBSD has a library called libedit,它似乎声称可以使用限制较少的许可来做很多相同的事情。

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

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