Créer dynamiquement un tableau de chaînes de caractères avec la fonction malloc

Je suis en train de créer un tableau de chaînes de caractères en C, en utilisant malloc. Le nombre de chaînes que le tableau tiendra peut changer au moment de l'exécution, mais la longueur des chaînes sera toujours cohérents.

J'ai tenté ce (voir ci-dessous), mais éprouve de la difficulté, des astuces dans la bonne direction sera très appréciée!

#define ID_LEN 5
char *orderedIds;
int i;
int variableNumberOfElements = 5; /* Hard coded here */

orderedIds = malloc(variableNumberOfElements * (ID_LEN + 1));

En fin de compte, je veux être en mesure d'utiliser le tableau pour ce faire:

strcpy(orderedIds[0], string1);
strcpy(orderedIds[1], string2);
/* etc */
  • Notez que vous ne devriez pas être à l'aide de ints ici. a) Il est signé (et je doute que vous voulez de -5 longueur de la chaîne), et b) il n'est pas garanti d'être à la bonne taille pour tenir les valeurs dont vous avez besoin pour tenir. Utiliser le size_t type pour le stockage des index de tableau d'objet et de tailles. C'est le type de l'argument de malloc.
  • cela dit, c'est la garantie d'être assez grand pour 5.
InformationsquelleAutor Chris | 2011-05-09