【问题标题】:GNU Readline: how to set the initial content of the input stringGNU Readline:如何设置输入字符串的初始内容
【发布时间】:2021-03-24 01:39:21
【问题描述】:

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

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

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

输入用户名:约翰

不是

输入用户名:

是否可以在 readline() 函数的字符串缓冲区中输入一个初始值,以便在运行时输出?然后,用户要么更改它,要么直接按 Enter,如果他同意的话。

提前感谢您的回复。

【问题讨论】:

    标签: gnu readline libreadline


    【解决方案1】:

    感谢 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中给出了一个例子

    【讨论】:

      猜你喜欢
      • 2010-12-03
      • 2019-12-18
      • 1970-01-01
      • 2017-06-06
      • 2011-01-25
      • 2021-04-01
      • 2015-02-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多