Comment concaténer deux tableaux d'octets en C?

Je suis de codage sur la plate-forme Arduino et je suis en train d'écrire quelque chose qui va concaténer/ajouter des tableaux d'octets dans C.

byte a[] = {a1, ..., an};
byte b[] = {b1, ..., bm};

byte c[] = a + b; //equivalent to {a1, ..., an, b1, ..., bm}

Quelle est la meilleure façon d'obtenir le résultat ci-dessus?

J'ai essayé de chercher en ligne, cependant je n'ai pas eu beaucoup de chance. J'ai vu une autre réponse sur tout en soulignant les étapes nécessaires pour ce faire cependant, je ne pouvais pas les suivre. Ils disent aussi qu'il y a des bibliothèques qui traitent de ce genre de chose, cependant comme je suis sur un Arduino, je ne suis pas sûr de savoir si ou de ne pas être totalement disponible pour moi.

Je comprends, il doit y avoir une sorte de manipulation de la mémoire dans l'ordre pour que cela fonctionne, cependant je suis nouveau à ce genre de bas niveau de manipulations afin de ne pas faire trop de sens pour moi. J'ai de l'expérience dans le supérieur, dans les langages (C#, Java et en C++).


Je dois également ajouter: Pouvez la même technique de travail pour:

byte a[] = {a1, ..., an};
byte b[] = {b1, ..., bm};

a = a + b
Des tailles fixes?
en supposant que byte est un char de taille équivalente, byte c[sizeof(a) + sizeof(b]; et deux memcpy appels serait-il le faire si c'est vraiment la façon dont a et b sont déclarées.
Oui. a et b sont déclarées comme ceci. Cependant, j'ai édité la question de contenir le cas lorsque b est ajouté pour une.
qui n'arrivera pas à moins que a est initialement dimensionnée pour accueillir ses données et de l'espace pour ajouté des données Et une memcpytype d'opération est toujours impliqué tôt ou tard. Peu importe, la syntaxe que vous utilisez est certainement pas en accord avec le langage C.
Oui. Je suis conscient que ce n'est certainement pas C. je l'ai écrit dans un pseudo style pour mieux expliquer mon problème.

OriginalL'auteur Ali Caglayan | 2015-02-21