在循环中使用 getline() 时出现分段错误

Segmentation fault when using getline() in a loop

我的代码创建了一个包含 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] );
}    

当我在命令行中输入第三个字符串时出现分段错误。
更重要的是,如果我用 5 替换 3,我在输入第一个字符串时会出现分段错误。

所以 1) 我怎样才能让程序存储所有 3 个或 5 个或我给它的任何字符串?,
2) 为什么如果我用 5 替换 3 我在第一个字符串上得到错误?

您必须将words声明为一个指针数组,并根据man page:

将其初始化为NULL
char *words[3] = {NULL};

http://ideone.com/GxV9qy