GNU Readline:如何设置输入字符串的初始内容
GNU Readline: how to set the initial content of the input string
各位大侠,说说readline()中如何设置输入行的初始值?
让我们假设我可以很有可能猜到用户将输入什么值。虽然,不同值的可能性仍然存在。
因此,我希望一开始的输入看起来像
Enter username: John
没有
Enter username:
是否可以在readline()函数的字符串缓冲区中输入一个初始值,以便运行时输出?然后,用户将更改它,或者直接按回车键,如果他同意的话。
提前感谢您的回复。
感谢 GNU Readline 维护者 Chet Ramey 的帮助,我已经知道了我的问题的答案。
为此,您需要使用钩子机制,创建并声明一个启动钩子函数。
static char *deftext;
static int
set_deftext ()
{
if (deftext) {
rl_insert_text (deftext);
deftext = (char *) NULL;
rl_startup_hook = (rl_hook_func_t *) NULL;
}
return 0;
}
接下来,在主要代码中:
deftext = "Initial Text";
rl_startup_hook = set_deftext;
line = readline ("My Prompt> ");
发行版中给出了示例,在文件examples/rl.c
中
各位大侠,说说readline()中如何设置输入行的初始值?
让我们假设我可以很有可能猜到用户将输入什么值。虽然,不同值的可能性仍然存在。
因此,我希望一开始的输入看起来像
Enter username: John
没有
Enter username:
是否可以在readline()函数的字符串缓冲区中输入一个初始值,以便运行时输出?然后,用户将更改它,或者直接按回车键,如果他同意的话。
提前感谢您的回复。
感谢 GNU Readline 维护者 Chet Ramey 的帮助,我已经知道了我的问题的答案。
为此,您需要使用钩子机制,创建并声明一个启动钩子函数。
static char *deftext;
static int
set_deftext ()
{
if (deftext) {
rl_insert_text (deftext);
deftext = (char *) NULL;
rl_startup_hook = (rl_hook_func_t *) NULL;
}
return 0;
}
接下来,在主要代码中:
deftext = "Initial Text";
rl_startup_hook = set_deftext;
line = readline ("My Prompt> ");
发行版中给出了示例,在文件examples/rl.c
中