i was wondering how do i create a ragget 2d string(char*)array in c . (my example code looks like this)
int j = 1;
char **array = null;
... read string...
*array = (char *) realloc(sizeof(char *) * j);
j++;
(sirAvertisment[j] = (char **) realloc((*sirAvertisment)[j],sizeof(char *) * strlen(somearray[i]))
for example i want it
but with pointers so when i read 1 row of a matrix i get the word complete
Your general idea is right, but you have some details wrong.
You shouldn't indirect through the pointers when assigning the allocations.
You need to add 1 to strlen()
when allocating, to allow foom for the trailing null.
You shouldn't cast the result of realloc.
You should check that realloc()
is successful before reassigning the original pointer.
Use malloc()
when you're allocating memory for the new element you added to the array; realloc()
should only be used when the pointer has already been initialized.
char **array = null;
...
char **new_array = realloc(array, sizeof(char *) * j);
if (!new_array) {
printf("Allocation failed!\n");
exit(1);
}
array = new_array;
array[j] = malloc(strlen(somearray[i]) + 1);
strcpy(array[j], somearray[i]);
j++;