C Readline 函数不工作

标签 c

我正在阅读关于 Objective-C 的 BigNerdRanch 书,它让我了解如何在常规 C 中将行输入到 stdin 中。出于某种原因,示例代码应该使用 readline 运行,但复制输入(小错误)不起作用。它构建成功,但在接受输入后,如果我输入 Mikey 它会显示 MMiikkeyeyy,

我得到:

(lldb) IMPLICIT DECLARATION OF FUNCTION READLINE IS Thread1:EXC_BAD_ACCESS(code=1,address=0x20000)

代码:

#include <stdio.h>

int main(int argc, const char * argv[])
{
    printf("Who is cool? ");
    const char *name = readline(NULL);
    printf("%s is cool!\n\n", name);
    return 0;
}

非常感谢任何帮助。

最佳答案

您没有包含声明 readline() 的头文件。因此 编译器假定该函数返回int。这就是事故发生的原因 运行时。

如果您使用 GNU readline 库,则添加

#include <readline/readline.h>
#include <readline/history.h>

到你的代码。但从你的问题来看,我假设你正在 OS X 上使用 Xcode 进行编译。 OS X 有一个“libedit”库,其中有一个“readline 包装器”。在这种情况下你只需 包括

#include <editline/readline.h>

重复输入(MMiikkeyyy)可能是调试器控制台的问题。 如果您从命令行启动程序,它应该可以正常工作。

关于C Readline 函数不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22896418/

相关文章:

c - OpenCL - clEnqueueNDRangeKernel - 输出数组变为输入数组

c - TicTacToe 的 Minimax 算法无法正常工作

c - fwrite 非 ASCII 字符

c - 制作自定义 tr.c 函数

c - 结构数组的第二个位置有垃圾

c - 用 malloc 初始化字节数组有问题吗?

C typedef 常量参数

c - C 中的硬链接(hard link)表

c - 源代码中的什么导致了平台相关的结果

c - main函数的返回值范围