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

时间:2016-11-11 22:23:59

标签: c loops segmentation-fault getline

我的代码创建了一个包含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我在第一个字符串上得到错误?

1 个答案:

答案 0 :(得分:3)

您必须将 words 声明为指针数组,并根据 NULL man / 3 / getline“rel =”nofollow noreferrer“>手册页

&#xA;&#xA;
  char * words [3] = {NULL};& #xA;  
&#xA;&#xA;

http:// ideone。 COM / GxV9qy

&#XA;