IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Concaténation de deux tableaux en C


Sujet :

C

  1. #1
    Membre éclairé Avatar de chercheur111
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2010
    Messages
    352
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2010
    Messages : 352
    Par défaut Concaténation de deux tableaux en C
    Bonjour,

    S'il vous plaît, est-ce qu'il y a une fonction C qui me permet de concaténer deux tableaux ?

    Merci.

  2. #2
    Membre Expert
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    952
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 952
    Par défaut
    Salut,

    Je pense qu'il faut la faire toi même à base de sizeof, malloc memcpy et free... Sans oublier de recalculer les pointeurs qui traineraient sur le tableau origine... Bon courage.

    A+

    Pfeuh

  3. #3
    Membre très actif

    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2011
    Messages : 181
    Billets dans le blog
    1
    Par défaut
    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    type_tableau *tab1;
    type_tableau *tab2;
    type_tableau *tab3 = (type_tableau *) malloc ((taille_tab1 + taille_tab2) * sizeof (type_tableau));
    int i;
    for (i = 0; i < taille_tab1; i++)
      tab3 [i] = tab1 [i];
    for (i = taille_tab1; i < taille_tab2; i++)
      tab3 [i] = tab2 [i - taille_tab1];
    for (i = 0; i < taille_tab1 + taille_tab2; i++)
      printf ("% %c", tab3 [i], "\n");
    Ou bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    type_tableau *tab1;
    type_tableau *tab2;
    tab2 = (type_tableau *) realloc (tab2, (taille_tab2 + taille_tab1) * sizeof (type_tableau));
    int i;
    for (i = taille_tab2; i < taille_tab1 + taille_tab2; i++)
      tab2 [i] = tab1 [i - taille_tab2];
    for (i = 0; i < taille_tab1 + taille_tab2; i++)
      printf ("% %c", tab2 [i], "\n");

  4. #4
    Membre actif
    Inscrit en
    Mai 2013
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 83
    Par défaut
    Bonjour,
    il n'y a pas une méthode simple sans passer par les pointeurs?
    merci

  5. #5
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 461
    Par défaut
    Citation Envoyé par etoilenord Voir le message
    il n'y a pas une méthode simple sans passer par les pointeurs?
    Les pointeurs sont simples. Si, si !

    Prends le temps une fois de comprendre à quoi ils servent et comment ils fonctionnent et t'auras plus jamais à poser cette question.

    Pour le reste, c'est possible dans une certaine mesure mais tu ne peux pas directement modifier la taille d'un tableau en C. Ce n'est pas un objet dynamique. Si tu veux concaténer deux tableaux sans passer par les pointeurs — donc en te privant de malloc() — soit tu en déclares un troisième de la bonne taille et tu copies les deux premiers dedans à la suite, soit tu utilises les VLA pour qu'il soit alloué dynamiquement dans la pile mais, malheureusement, il ne survivra pas plus longtemps que le bloc dans lequel tu l'as ouvert.

Discussions similaires

  1. PL/SQL COMPARAISON DE DEUX TABLEAUX APRES BULK
    Par mimi_été dans le forum PL/SQL
    Réponses: 5
    Dernier message: 30/06/2009, 12h14
  2. Concaténation de deux tableaux
    Par jules_diedhiou dans le forum Langage
    Réponses: 12
    Dernier message: 13/05/2009, 20h06
  3. Concaténation de deux tableaux
    Par mego dans le forum Langage
    Réponses: 6
    Dernier message: 19/11/2008, 11h52
  4. Concaténer deux tableaux de cellules
    Par wawrint dans le forum MATLAB
    Réponses: 2
    Dernier message: 22/05/2008, 11h53
  5. Concaténation de deux integer pour former une clé primaire
    Par stoukou dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 08/09/2005, 10h34

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