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"};