GNU Readline:如何设置输入字符串的初始内容

问题描述 投票:0回答:1

各位同仁,告诉我如何在readline()中设置输入行的初始值?

假设我可以以很高的概率猜测用户将输入什么值。尽管如此,不同值的可能性仍然存在。

因此,我希望从一开始的输入看起来像

输入用户名:John

不是

输入用户名:

是否可以在readline()函数的字符串缓冲区中输入一个初始值,以便运行时输出?然后,如果用户同意,则可以更改它,或者只需按 Enter 键即可。

提前感谢您的回复。

gnu readline libreadline
1个回答
2
投票

感谢 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> ");

发行版中的 example/rl.c 文件中给出了一个示例

© www.soinside.com 2019 - 2024. All rights reserved.