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.

1 réponse

  1. 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