Remplir un tableau de chaîne de caractère en C

J’essaie de récupérer une chaîne de caractères saisie par l’utilisateur à l’aide d’un code C et de l’ajouter ensuite à un tableau de chaînes de caractères de sorte que je puisse avoir une variable dont le premier élément est un nom. Ainsi, si la variable s’appelle tab, tab[1] devient un nom complet qui est saisi dans le tableau à l’aide d’une fonction comme scanf ou getstring mais lorsque j’ai essayé, j’ai obtenu des erreurs.

L’exemple suivant vous permet de créer et remplir un tableau de chaîne de caractère en C avec une boucle for. Le tableau contient les noms des étudiants, dans un premier temps vous entrez le nombre d’étudiant à saisir, puis remplir le tableau et à la fin le programme affiche le résultat, je vous recommande de l’essayer dans votre compilateur, pour bien comprendre le code:

#include <stdio.h>

int main()
{
   int stds;
   printf("Veuillez renseigner le nombre des étudiants:");
   scanf("%d",&n);
   char tab[n][10];   // 10 est le nombre max de caractères 

   //remplir le tableau
   printf("\nVeuillez renseigner les noms des etudiants:\n");
   for(int i=0; i < n; i++)
      scanf("%s", tab[i]);

   //afficher le tableau
   printf("\nles etudiants du tableau sont donc les suivants:\n");
   for(int j=0; j < n; j++)
      printf("%s\n", tab[j]);
}

Sortie:

Source: Créer et remplir un tableau de chaînes de caractères en C - #3 par Michel

Tu pourras remplir un tableau comme ceci:

Si vous ne souhaitez pas modifier les chaînes, vous pouvez simplement faire:

const char *arr[4];
arr[0] = "bleu";
arr[1] = "rouge";
arr[2] = "vert";
arr[3] = "blanc";
//...

En faisant cela, vous allez allouer un tableau de deux pointeurs sur const char. Ces pointeurs seront alors positionnés aux adresses des chaînes statiques "bleu", "rouge", "vert" et "blanc".

Si vous voulez être en mesure de modifier le contenu de la chaîne, vous devez faire quelque chose comme ceci:

char arr[4][10];
strcpy(arr[0], "bleu");
strcpy(arr[1], "rouge");
strcpy(arr[2], "vert");
strcpy(arr[3], "blanc");

Cela permettra d’allouer deux tableaux consécutifs de 10 caractères chacun, après quoi le contenu des chaînes statiques sera copié dans ces tableaux.

Pour les chaînes de caractères constantes :

const char *strings[] = {"hello","world","welcome"};