Sfou Sfou - 7 months ago 58
C Question

Segmentation fault when using getline() in a loop

My code creates an array of 3 strings and attemps to populate each string using getline(). It also prints every string it gets:

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] );

When I enter the third string in the command line I get a segmentation error.

What's more, if I replace 3 with 5, I get the segmentation fault when I enter the first string.

So 1) How can I get the program to store all 3 or 5 or whatever strings I give it?, and

2) Why if I replace 3 with 5 I get the error on the first string?

mch mch

You have to declare words as an array of pointer and initialize it to NULL according to the man page:

char *words[3] = {NULL};