如何在C中连接两个字节数组?

Ali*_*yan 6 c arrays arduino concatenation

我在Arduino平台上编码,我正在尝试编写一些能够在C中连接/追加字节数组的东西.

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

byte c[] = a + b; // equivalent to {a1, ..., an, b1, ..., bm}
Run Code Online (Sandbox Code Playgroud)

获得上述结果的最佳方法是什么?

我尝试在网上搜索,但是我运气不好.我在SO上看到了另一个答案,强调了为了做到这一点所需要的步骤,但我无法遵循它们.他们还说有些图书馆可以处理这类事情,但是当我在Arduino时,我不确定这些是否完全可供我使用.

我知道需要进行某种记忆操作才能实现这一点,但是我对这些低级操作不熟悉,所以对我来说没有太多意义.我有更高级语言的经验(C#,Java和一些C++).


我还要补充一点:同样的技术可以用于:

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

a = a + b
Run Code Online (Sandbox Code Playgroud)

Grz*_*ski 8

byteC中没有类型.除非它是某种类型定义,否则你可以使用unsigned char或者某种固定类型<stdint.h>.无论如何,这是一些解决方案:

#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;
}
Run Code Online (Sandbox Code Playgroud)

确保数组a至少有n + m元素的空间(这里n = 3和那里m = 3),以避免数组溢出问题(即未定义的行为,可能会导致程序崩溃甚至更糟).