Probléme de stockage dans un structure

jutabary Messages postés 15 Statut Membre -  
 java4ever -
Bonjour,
voila le but du programme est de récupérer les mots d'une chaine de caractères afin de les placer dans une structure (une case de tableau contient un mot). Sachant qu'a l'état actuel des choses, je n'ai pas vu les pointeurs.

Voila le code:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
    typedef struct
    {
        char mot[27];
    }stockage;

    char chaine[27];
    printf("Entrez la chaine de caractere: ");
    gets(chaine);

    // Compte les mots pour avoir le nombre exacte de mot.
    int i;
    int compteur = 0;
    for(i = 0; i < strlen(chaine); i++)
    {
        if(chaine[i] ==' ' || chaine[i] == '\0')
        {
            compteur++;
        }
    }
    compteur++;

    printf("Il y a %d mots dans la chaine", compteur);

    stockage tableau[compteur];

    //extraire les mots de la chaine dans le tableau de type stockage.
    for(i = 0; i < compteur; i++)
    {
        int j = 0;
        while(chaine[j] !=  ' ')
        {
            tableau[i].mot[j] = chaine[j];
            j++;
        }
        tableau[i].mot[j] = '\0';

    }

    printf("%s\n", tableau[0]);//Pour voir si le tableau contient bien quelque chose.

    return 0;
}


Merci d'avance.

A voir également:

1 réponse

java4ever
 
Bonjour,

je pense que ton code doit fonctionner excepté l'affichage du premier élément du tableau :
en effet, tableau est de type struct alors que tu fait un "printf(%s "qui attend un tableau de char
Il faut juste remplacer
printf("%s\n", tableau[0]);

par
printf("%s\n", tableau[0].mot);

qui lui est bien un tableau de char

Et ça devrait marcher
Si tu veux afficher tous les mots, tu devra faire une boucle de 0à compteur -1
et remplacer tableau[0] par tableau[i]
Bon courage
0