p
u
b
l
i
c
i
t
é
publicité
  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 : 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 confirmé
    Étudiant
    Inscrit en
    décembre 2007
    Messages
    629
    Détails du profil
    Informations personnelles :
    Âge : 29

    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
    Enseignant
    Inscrit en
    juillet 2006
    Messages
    1 937
    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 : 1 937
    Points : 2 980
    Points
    2 980

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

Discussions similaires

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

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