[英]C Readline Function Not Working
我正在阅读有关 Objective-C的BigNerdRanch 书,它教我如何在常规 C 中将行放入stdin
。出于某种原因,应该使用readline
重复输入(小错误)运行的示例代码不起作用。 它成功构建,但在输入后,如果我输入Mikey
它会显示MMiikkeeyy
,
我得到:
(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>
重复输入 (MMiikkeeyy) 可能是调试器控制台的问题。 如果您从命令行启动程序,它应该可以正常工作。
#include <stdio.h>
int main(int argc, const char * argv[])
{
printf("Who is cool? ");
char name[50];
scanf("%s",name);
printf("%s is cool!\n\n", name);
return 0;
}
上面的代码做你想要的。
你的代码有两个问题
希望这会有所帮助,并获得良好的 c 资源,请参见此处
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.