例如,假设我有字符串“Hinge” - 我希望能够将光标移动到开头,点击del删除“H”,然后插入“B”,将所有内容推到前面向前游标并创建单词“Binge”,而不是覆盖默认行为“i”。我可以使用标准的addch()函数吗?
此外,即使我可以在屏幕上正确打印它,看起来这是一个过于复杂的问题,使其与缓冲区相对应。这似乎是一项常见的任务,但我不能想到一种非黑客的方法。
以下是我目前处理基本输入的示例。
if (isprint(key)) {
if (ctx->pos != sizeof(ctx->line)-1) {
mvwaddch(self->window, y, x, key);
ctx->line[ctx->pos++] = key;
ctx->line[ctx->pos] = '\0';
}
}
答案 0 :(得分:1)
您可以使用GNU readline library来完成此操作,而不是直接编码到curses。这是一个简单的程序:
#include <stdio.h>
#include <readline/readline.h>
#include <readline/history.h>
int main () {
char *s = readline("Type something: ");
printf("You typed: %s\n", s);
return 0;
}
在我的系统上,我使用gcc prog.c -lreadline -ltermcap