我正在尝试使用GNU Readline库在shell中实现自动完成和历史记录。我正在使用fgets()
来检索用户,在阅读了readline
函数的工作方式后,我决定使用它以支持自动完成等。但是当我执行我的程序时,{{1}在我输入任何输入之前,函数在shell上输出奇怪的字符。奇怪的结果,例如readline
,P�6
PJ�
P #`,
P s`。出于某种原因,它始终以P开头。这是我的代码:
,
关于问题是什么的任何想法?感谢。
答案 0 :(得分:3)
在将userInput
传递给readLine()
之前初始化memset(userInput, 0, sizeof(userInput));
:
readLine()
这是传递给userInput
函数的参数的描述(我在这里找到man readline):
如果参数为NULL或空字符串,则不会发出提示。
由于你没有初始化{{1}},它显示的是那里发生的事情。