Comment concaténer deux tableaux en C?

Comment concaténer deux tableaux pour obtenir un seul tableau contenant les éléments des deux tableaux d’origine?

    Les tableaux en C sont simplement une zone de mémoire contiguë, avec un pointeur sur leur début *. Donc, les fusionner implique:

    1. Trouvez la longueur des tableaux A et B (vous aurez probablement besoin de connaître le nombre d’éléments et la sizeof chaque élément)
    2. Allocation ( malloc ) d’un nouveau tableau C de la taille de A + B.
    3. Copier ( memcpy ) la mémoire de A à C,
    4. Copiez la mémoire de B en C + la longueur de A (voir 1).
    5. Vous voudrez peut-être aussi désallouer ( free ) la mémoire de A et B.

    Notez qu’il s’agit d’une opération coûteuse, mais c’est la théorie de base. Si vous utilisez une bibliothèque qui fournit une abstraction, vous serez peut-être mieux. Si A et B sont plus compliqués qu’un simple tableau (par exemple, des tableaux sortingés), vous devrez faire une copie plus intelligente, puis les étapes 3 et 4 (voir: comment fusionner deux tableaux ayant des valeurs différentes dans un tableau ).


    • Bien que, pour les besoins de cette question, l’explication du pointeur suffise à proprement parler (et pour pacifier le commentaire ci-dessous): C a le concept d’un tableau, qui peut être utilisé sans la syntaxe des pointeurs. En ce qui concerne la mise en œuvre, toutefois, un tableau C et une zone de mémoire contiguë, avec un pointeur, sont suffisamment proches pour pouvoir être utilisés, et sont souvent utilisés de manière interchangeable.