【发布时间】:2017-03-26 05:26:15
【问题描述】:
我的代码创建了一个包含 3 个字符串的数组,并尝试使用 getline() 填充每个字符串。它还打印它得到的每个字符串:
int i;
size_t n = 100;
char (*words[3])[100];
for ( i = 0; i < 3; i++)
{
getline(&words[i], &n, stdin);
printf("%s\n",words[i] );
}
当我在命令行中输入第三个字符串时,出现分段错误。
更重要的是,如果我将 3 替换为 5,则在输入第一个字符串时会出现分段错误。
所以 1) 我怎样才能让程序存储所有 3 或 5 或我给它的任何字符串?和
2) 为什么如果我将 3 替换为 5 我会在第一个字符串上得到错误?
【问题讨论】:
-
你在
words的声明中有一个*,这意味着涉及一个或多个指针,但你没有让它们指向任何东西。 -
我认为这实际上也可能被解释为函数指针。
-
@n.m.如果指针初始化为
NULL,getline将执行此操作。 -
@SenselessCoder 函数指针由括号内的参数列表指示
-
您应该会收到一条编译器消息,提示您使用错误的参数类型调用
getline
标签: c loops segmentation-fault getline