How to Concatenate Two Byte Arrays in C?

I am coding on the Arduino platform and I am trying to write something that will concatenate/append byte arrays in C.

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

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

What is the best way to get the above result?

I tried searching online, however I have not had much luck. I saw another answer on SO highlighting the steps needed in order to do this however I could not follow them. They also say that there are libraries that deal with this kind of thing, however as I am on Arduino I am unsure whether or not these are totally available to me.

I understand there needs to be some sort of memory manipulation in order for this to work however I am new to these kinds of low level manipulations so they do not make too much sense to me. I have experience in higher languages (C#, Java and some C++).


I should also add: Can the same technique work for:

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

a = a + b
6

2 Answers

There is no byte type in C. Unless it's some type definition, you could use unsigned char or some fixed type from <stdint.h> portably. Anyway, here is some solution:

#include <stdio.h>
#include <string.h>

int main(void) {
    unsigned char a[3+3] = {1, 2, 3}; // n+m
    unsigned char b[3]   = {4, 5, 6}; // m

    memcpy(a+3, b, 3); // a+n is destination, b is source and third argument is m

    for (int i = 0; i < 6; i++) {
        printf("%d\n", a[i]);
    }

    return 0;
}

Make sure that array a has room for at least n + m elements (here n = 3 and m = 3 as well) in order to avoid issues with array overflow (i.e. undefined behavior, that may crash yor program or even worse).

5

If the sizes are known you can simply create a new byte array of that size and use simple loops to fill it.

1

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Maya Lin-Takahashi

Maya Lin-Takahashi

Consumer Tech & Gadget Reviewer

Maya is a hardware enthusiast who tests and reviews smart home devices, smartphones, wearables, and audio gear. She focuses on practical consumer value and build quality.

Share this article
Twitter Facebook Pinterest