I am trying to pass a array of pointers to string to a function where I need to set the values. In the passing function I do not know the number of strings I will get, the called function is calling some other function which returns list of strings.
Sample code below:
int main() {
    char** list;
    create(list);
}
int create(char **array) {
    char* str[] = { "hello", "dear" };
    int len;
    int i = 0;
    for (i = 0; i < 2; i++) {
        len = strlen(str[i]);
        printf("%d\n", len);
        *(array + i) = (char*) malloc(len * sizeof(char*));
        strcpy(*(array + i), str[i]);
        i++;
    }
    return 1;
}
This gives me segmentation fault.
What wrong am I doing here. Please help.
Thanks
EDIT Updated code from below comments:
int main() {
    char** list;
    create(list);
    int i = 0;
    for (i = 0; i < 2; i++) {
        printf("%s\n", list[i]); // segmentation fault
    }
}
int create(char **array) {
    char* str[] = { "hello", "dear" };
    int len;
    int i = 0;
    array = malloc(2 * sizeof(char*));
    for (i = 0; i < 2; i++) {
        len = strlen(str[i]);
        printf("%d\n", len);
        *(array + i) = (char*) malloc(len * sizeof(char));
        strcpy(*(array + i), str[i]);
        printf("%s\n", array[i]); // this prints
    }
    return 1;
}
Now getting segmentation fault in main while printing the list.
Actual code where I am reading the strings
int i;
for ( i=0; i<reply->elements; i++ )
{
printf( "Result: %d---%s\n", i,reply->element[i]->str );
*array[i] = (char*)malloc(strlen(reply->element[i]->str));
printf("***");
strcpy(array[i],reply->element[i]->str);
printf( "Array[%d]: %s\n", i,array[i] );
}
 
     
     
     
     
    