我做了一个简单的C程序来演示这个问题。在这里。
#include <stdio.h>
int main(int argc, const char * argv[]) {
char buffer[128];
memset(buffer, 0, sizeof(buffer));
printf("Type data:\n");
scanf("%126s", buffer);
printf("%s\n", buffer);
getchar();
return 0;
}
问题在于,当应用程序正在等待用户输入scanf()并且用户用户想要编辑他键入的行,并且用箭头移动插入符时,插入符号不会移动但是插入了新的丑陋输入。
由于某种原因,它没有以我期望的方式处理密钥。我也无法使用向上键进入上一个打字行。
显然我应该刻意启用此行为。你能建议,我该怎么做?
答案 0 :(得分:2)
使用readline()
。这是一个简单的例子:
#include <stdio.h>
#include <readline/readline.h>
#include <readline/history.h>
#include <ctype.h>
#define MAX_LINE_LEN 80
int main() {
char *line_buffer;
int n, i;
while (1) {
line_buffer = readline("Say something: ");
if (!line_buffer) break;
for (i=0; line_buffer[i]; i++) {
line_buffer[i] = toupper(line_buffer[i]);
}
printf("YOU SAID: %s\n",line_buffer);
}
putchar('\n');
return 0;
}
/* (Compile with cc foo.c -lreadline -o foo) */