Ce que j'essaye de faire est de créer un tableau bidimensionnel de chaînes de caractères Les erreurs de segmentation suivantes immédiatement, quel est le problème?tableau de charmes multidimensionnels?
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]);
}
}
alors comment puis-je malloc b [0] à b [n]? – user105033
malloc (sizeof (char *) * n)? c'est ma conjecture, je peux me tromper. – pxl
@pxl: pour être précis, il devrait être 'malloc (sizeof (char **) * n);', mais en pratique 'sizeof (char **)' est le même que 'sizeof (char *)' . C'est la raison principale pour laquelle j'aime utiliser 'sizeof' avec la chose pour laquelle je suis en train d'allouer la mémoire:' pointer = malloc (n * sizeof * pointer); '.Peu m'importe si le pointeur pointe vers un tableau de structures ou une structure avec des tableaux ou quoi que ce soit; le 'malloc()' obtient toujours la bonne taille :) – pmg