void foo(char** array)
{
*array = (char *)calloc(2, sizeof(char*));
if(!(*array))
{
printf("returning\n");
return;
}
array[0] = "fu";
array[1] = "bar";
printf("%s\n", array[0]); // this two lines actually print out
printf("%s\n", array[1]); // but I get a runtime error
}
int main()
{
char **words_array;
foo(&words_array);
printf("%s\n", words_array[0]);
printf("%s\n", words_array[1]);
}
Refactorings
No refactoring yet !
bob
July 9, 2009, July 09, 2009 01:22, permalink
you need another level of indirection
void foo(char*** array)
{
*array = (char **)calloc(2, sizeof(char*));
if(!(*array))
{
printf("returning\n");
return;
}
(*array)[0] = "fu";
(*array)[1] = "bar";
printf("%s\n", (*array)[0]);
printf("%s\n", (*array)[1]);
}
int main()
{
char **words_array;
foo(&words_array);
printf("%s\n", words_array[0]);
printf("%s\n", words_array[1]);
return 0;
}
How do you initialize an array thats going to have words inside of another function.
This is what I have (doesn't really work):
p.s. only C code please (no C++)