Bonjour,
S'il vous plaît, est-ce qu'il y a une fonction C qui me permet de concaténer deux tableaux ?
Merci.
Bonjour,
S'il vous plaît, est-ce qu'il y a une fonction C qui me permet de concaténer deux tableaux ?
Merci.
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
Par exemple :
Ou bien :
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");
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");![]()
Bonjour,
il n'y a pas une méthode simple sans passer par les pointeurs?
merci
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.
Partager