我如何使程序期望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);
}
您要使用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