Je veux stocker des chaînes dans un tableau 2D à l’aide de pointeurs, mais je ne comprends pas comment le faire. Les exemples que j’ai vus utilisent uniquement des tableaux d’ints ou utilisent les crochets [] pour allouer une taille fixe de mémoire. J’essaie donc d’initialiser mon tableau 2D de chaînes et voici ce que j’ai:
char ** ssortingngArr = (char**)malloc(/*I don't know what goes here*/); for(i = 0; i < rows; i++) stringArr[i] = (char*)malloc(cols *sizeof(char));
Comme vous pouvez voir le paramètre de mon premier appel de malloc, je ne sais pas quoi mettre si je veux un nombre x de lignes exact, chaque ligne stockant une chaîne de caractères. Toute aide serait appréciée!
Faites ceci, car vous allouez un certain nombre de pointeurs:
malloc(rows * sizeof(char*))
Vous voudrez utiliser le nombre de lignes.
char ** ssortingngArr = malloc(rows * sizeof(char*));
De même, ne convertissez pas la valeur de retour d’un appel malloc ().
Utilisez sizeof *ptr * N
Notez que cette méthode utilise le type correct même si ssortingngArr
était char ** ssortingngArr
ou int ** ssortingngArr
.
ssortingngArr = malloc(sizeof *ssortingngArr * rows); for(i = 0; i < rows; i++) stringArr[i] = malloc(sizeof *(stringArr[i]) * cols);