我的代码创建了一个由3个字符串组成的数组,并尝试使用getline()填充每个字符串。它还打印每次得到的字符串:在循环中使用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]);
}
当我输入下面的命令行的第三个字符串我得到一个分段错误。
更重要的是,如果我用5替换3,则在输入第一个字符串时出现分段错误。
所以1)我怎样才能让程序存储所有3或5或任何字符串我给它?和
2)为什么如果我替换3与5我得到第一个字符串的错误?
您在words'的'的声明,具有'*'其中意味着有一个或多个指针参与,但你没有把它们指向任何东西。 –
我认为这可能实际上也被解释为一个函数指针。 – SenselessCoder
@ n.m。如果指针初始化为NULL,'getline'将执行此操作。 – mch