私がやろうとしているのは、文字列の2次元配列を作成することです。次のセグメンテーション違反は即座に発生しますが、何が問題になっていますか?
void add2(char***b, char *i)
{
if (!i) {
b[0][0] = (char*) malloc(120);
sprintf(b[0][0], "%s", "hithere");
b[0][1] = (char*) malloc(120);
sprintf(b[0][1], "%s", "bithere");
} else {
strcat(b[0][0], "\\\\");
strcat(b[0][0], i);
strcat(b[0][1], "\\\\");
strcat(b[0][1], i);
}
}
void add1(char ***b)
{
add2(b,NULL);
add2(b,"one");
add2(b,"two");
add2(b,"three");
}
int main()
{
char **keys[2] = {0};
int i,j;
add1(keys);
for (i = 0; keys[i]; i++)
for (j = 0; keys[j]; j++)
{
fprintf(stderr, "%s\n", keys[i][j]);
free(keys[i][j]);
}
}