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)
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),以避免数组溢出问题(即未定义的行为,可能会导致程序崩溃甚至更糟).