Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 4 sur 4
  1. #1
    Futur Membre du Club
    Inscrit en
    juillet 2009
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : juillet 2009
    Messages : 68
    Points : 17
    Points
    17

    Par défaut construire un tableau de chaines de caractère

    bonjours;
    dans un programme c, je veux construire un tableau de chaines de caractère à partir d'un tableau déjà existé. pour cela j'ai créé un tableau:
    Code :
    1
    2
    char *chaine[]={"azer","qsdf","wxcv"} ;
    char *destination[];
    lorsque je met:
    Code :
    strcat(destination[1],chaine[1]);
    je reçois quelque chose comme ça: #@&qsdf .
    c-à-dire que destination[1] contient déjà "#@&".
    donc comment initialiser le tableau destination à NULL pour qu'il ne reçoit que ce qu'il y a dans le tableau chaine ?

    cordialement

  2. #2
    Membre confirmé
    Étudiant
    Inscrit en
    décembre 2007
    Messages
    629
    Détails du profil
    Informations personnelles :
    Âge : 28

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : décembre 2007
    Messages : 629
    Points : 204
    Points
    204

    Par défaut

    Ce n'est peut être pas strcat qu'il te faut, c'est peut être strcpy (fait man strcpy). strcat ajoute une nouvelle chaine à la fin d'une chaine déjà existante, d'où #@& dans #@&qsdf.
    De toute façon, Il faut que tu alloues la place mémoire necessaire pour destination[1].

  3. #3
    Expert Confirmé
    Avatar de fred1599
    Homme Profil pro Fred
    Enseignant
    Inscrit en
    juillet 2006
    Messages
    1 821
    Détails du profil
    Informations personnelles :
    Nom : Homme Fred
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : juillet 2006
    Messages : 1 821
    Points : 2 820
    Points
    2 820

    Par défaut

    Si le tableau est déjà existant, autant préserver son intégrité en ajoutant const avant son type de variable.

    Ensuite comme le dis ikuzar, strcpy est le bon choix...

    Tu peux allouer statiquement la taille de ta liste de chaîne (destination) étant donné que tu connais déjà la taille de ta liste de chaîne (chaine).

    Donc ça devrait être quelque chose de ce style

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    int main(void)
    {
        int ind;
        const char *chaine[] = {"azer","qsdf","wxcv"};
        char destination[3][5];
     
        for(ind=0; ind<3; ind++)
            strcpy(destination[ind], chaine[ind]);
     
        printf("%s\n", destination[1]); /* pour test */
     
        return 0;
    }
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  4. #4
    Futur Membre du Club
    Inscrit en
    juillet 2009
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : juillet 2009
    Messages : 68
    Points : 17
    Points
    17

    Par défaut

    c'est claire maintenant ! merci bien à tous !

+ Répondre à la discussion
Cette discussion est résolue.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •