我的代码创建了一个包含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我在第一个字符串上得到错误?
答案 0 :(得分:3)
您必须将 words
声明为指针数组,并根据 NULL man / 3 / getline“rel =”nofollow noreferrer“>手册页:
char * words [3] = {NULL};& #xA;
&#xA;&#xA; &#XA;