Créer et remplir un tableau de chaînes de caractères en C

j’essaies de faire un exo de lecture de données à inserer dans un tableau, je voulais d’abord faire un tableau qui prend des caractères puis qui les affiche après, mais à l’exection je n’arrive qu’a entrer la première information

int main()
{
int stds,i=1;
printf(" Veuillez renseigner le nombre d’étudiants: « );
scanf( »%d",&stds);
char tabc[stds+1];
tabc[0]= ///;
printf(" Veuillez renseigner les noms des etudiants:\n « );
while (i<=stds)
{
scanf( »%s",tabc[i+1]);
i++;
}
printf(" les etudiants du tableau sont donc les suivants");
for (i=0;i<=stds;i++)
{
printf(« %s »,tabc[i]);
}

Bonjour,

Bienvenu sur le forum WayToLearnX :slightly_smiling_face:

Vous avez quelques erreurs à fixer

#include <stdio.h>
#define MAX_STRINGS 10   //nombre max d'étudiants
#define STRING_LENGTH 50 //taille max du chaine de caractère(nom d'étudiant)

int main()
{
	//initialisation du tableau
    char tabc[MAX_STRINGS][STRING_LENGTH];
    int i,n;
    printf("Veuillez renseigner le nombre des étudiants: ");
    scanf("%d",&n);

	//saisir les étudiants
    printf("\nVeuillez renseigner les noms des etudiants:\n");
    for(i=0; i<n; i++){
        printf("Etudiant [%d]: ",i+1);
        getchar();
        scanf("%[^\n]s",tabc[i]);
    }
	
	//Afficher le tableau des étudiants
    printf("\nles etudiants du tableau sont donc les suivants:\n");
    for(i=0; i<n; i++){
        printf("[%d]: %s\n",i+1,tabc[i]);
    }
	
    getchar();
    return 0;
}

Sortie:

Veuillez renseigner le nombre des étudiants: 3

Veuillez renseigner les noms des etudiants:
Etudiant [1]: Alex
Etudiant [2]: Bob
Etudiant [3]: Ali

les etudiants du tableau sont donc les suivants:
[ 1]: Alex
[ 2]: Bob
[ 3]: Ali

La ligne suivante:

char tabc[MAX_STRINGS][STRING_LENGTH];

Ne s’agit pas d’un tableau 2D de string, mais d’un tableau 2D de char qui représente un tableau 1D de string. Pour créer un tableau 2D de string en C, vous devez utiliser : char tab[WIDTH][HEIGHT][MAX_STRING_LENGTH]. Comme ci-dessus, vous avez des erreurs de logique dans votre code, et vous pouvez probablement résoudre ce problème avec un simple tableau de string 1D. (Tableau 2D de char).

#include <stdio.h>

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

   printf("\nVeuillez renseigner les noms des etudiants:\n");
   for(int i =0; i < stds; i++)
      scanf("%s", tabc[i]);

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

Output:

je comprends mieux…
merci bcp :slightly_smiling_face:

Merci pour votre reponse :slightly_smiling_face: :slightly_smiling_face:, elle m’a bien aidé aussi, je cherchais surtout aussi le moyen de ne pas limiter le nombre d’elements et de caractères qui peuvent entrer dans le tableau…merci à vous aussi

Avec plaisir.

Bon courage :muscle: