使输入恢复,而不是^ [[C中的A

问题描述 投票:1回答:1

我如何使程序期望UP箭头键并将先前的输入值放在当前值上?

代码:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>


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

void parse(char* command){

    if(!strcmp(command,"exit")){
        exit(1);
    }

    main(0,NULL);
}

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

    printf("command > ");
    fgets(buffer , sizeof(buffer) , stdin);

    buffer[strlen(buffer) - 1] = 0;

    parse(buffer);

}

screenshot

c
1个回答
5
投票

您要使用readline库。标准I / O不支持向上箭头(以及许多其他附加的键绑定),但在readline中可以轻松使用。

还请注意,您的程序应在输入上循环,而不是在main和parse之间进行递归调用。

   // This is prog.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <readline/readline.h>
#include <readline/history.h>

void parse(char* command){
    if(!strcmp(command,"exit")){
        exit(1);
    }
}

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

    while ((buffer = readline("command >")) != NULL) {
        add_history(buffer);
        parse(buffer);
        free(buffer);
    }
    return 0;
}

您将必须使用readline构建:

cc prog.c -lreadline

有关readline的更多信息,请参考此link

© www.soinside.com 2019 - 2024. All rights reserved.