Я пытаюсь динамически заполнить массив строк по указателям.
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
#include <unistd.h>
#include <stdint.h>
void foo(char ***arr) {
*arr = (char **)malloc(sizeof(char *) * 10);
*arr[0] = (char *)malloc(100);
*arr[0] = "xxxxxxxxx";
*arr[1] = (char *)malloc(100);
*arr[1] = "yyyyyyyyy";
}
int main(int argc, char argv) {
char **arr = NULL;
foo(&arr);
printf("%s\n", arr[0]);
printf("%s\n", arr[1]);
return 0;
}
Но в строке
*arr[1] = (char *)malloc(100);
происходит ошибка Segmentation fault. Уже по всякому пробовал. Не могу понять как правильно написать код. В чём ошибка?
Пробовал так без функции
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
#include <unistd.h>
#include <stdint.h>
int main(int argc, char argv) {
char **arr = NULL;
arr = (char **)malloc(100);
arr[0] = (char *)malloc(10);
arr[1] = (char *)malloc(10);
arr[0] = "xxxxxxxxx";
arr[1] = "yyyyyyyyy";
printf("%s\n", arr[0]);
printf("%s\n", arr[1]);
return 0;
}
Всё работает. Хотя если этот код работает, то не факт, что он правильно работает.