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

    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    char *chaine[]={"azer","qsdf","wxcv"} ;
    char *destination[];
    lorsque je met:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 actif
    Profil pro
    Étudiant
    Inscrit en
    décembre 2007
    Messages
    630
    Détails du profil
    Informations personnelles :
    Âge : 30
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : décembre 2007
    Messages : 630
    Points : 234
    Points
    234

    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
    Membre expert
    Avatar de fred1599
    Homme Profil pro
    Enseignant
    Inscrit en
    juillet 2006
    Messages
    2 038
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : juillet 2006
    Messages : 2 038
    Points : 3 234
    Points
    3 234

    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Membre du Club
    Inscrit en
    juillet 2009
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : juillet 2009
    Messages : 68
    Points : 47
    Points
    47

    Par défaut

    c'est claire maintenant ! merci bien à tous !

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 31/05/2007, 16h10
  2. tableau de chaine de caractères
    Par psgman113 dans le forum C
    Réponses: 15
    Dernier message: 22/01/2007, 19h52
  3. Pointeur, tableau et chaines de caractères.
    Par rouliane dans le forum C++
    Réponses: 8
    Dernier message: 19/12/2006, 21h27
  4. Réponses: 15
    Dernier message: 04/11/2006, 11h02
  5. [C] tableau de chaines de caractères
    Par kitsune dans le forum C
    Réponses: 18
    Dernier message: 01/04/2006, 19h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo