【发布时间】:2015-10-26 11:05:35
【问题描述】:
我可以使用 GNU readline 将用户输入限制为 5 个字符:
#include <readline/readline.h>
#include <stdio.h>
#include <stdlib.h>
static int limit_rl(FILE *f)
{
if (rl_end > 5) {
return '\b';
}
return rl_getc(f);
}
int main(void)
{
char *str;
rl_getc_function = limit_rl;
str = readline("> ");
printf("%s\n", str);
free(str);
return 0;
}
但是,如何读取具有默认值(不是提示)的输入,例如:
> ummy
^ cursor here
如果用户键入 d 并 Enter 返回“dummy”
如果用户键入 DEL 并 Enter 返回“mmy”
【问题讨论】:
-
你的意思是
ummy应该已经存在了? -
查看
rl示例 - 可以设置一个启动挂钩 (rl_startup_hook),它执行一次rl_insert_text,然后自行禁用。 -
@Jongware,就像一个魅力:code,谢谢一百万!!
-
@Jongware,您的评论似乎是对我的回答,发表您的评论作为答案,我会接受。
-
@Magisch:它在文档中:“
readline返回的行分配有malloc();,调用者应该在完成后free()行。”