我正在Arduino平台上编写代码,尝试用C语言编写一个能够连接/追加字节数组的函数。
byte a[] = {a1, ..., an};
byte b[] = {b1, ..., bm};
byte c[] = a + b; // equivalent to {a1, ..., an, b1, ..., bm}
什么是获得上述结果的最佳方法?我试过在网上搜索,但没有太大的运气。我看到了SO上的另一个答案,其中突出了需要执行此操作所需的步骤,但我无法跟随它们。他们还说有一些库可以处理这种情况,但由于我在Arduino上,我不确定这些是否完全可用于我。
我理解需要进行某种内存操作才能使其工作,但我对这些低级别的操作很陌生,所以它们对我来说并不太有意义。我有高级语言(C#,Java和一些C ++)的经验。
另外,我还应该补充:同样的技术是否也适用于:
byte a[] = {a1, ..., an};
byte b[] = {b1, ..., bm};
a = a + b
byte
是一个与char
大小相等的等效类型,如果确实是这样声明了a
和b
,那么byte c[sizeof(a) + sizeof(b)];
和两个memcpy
调用就可以完成它。 - WhozCraiga
最初的大小足以容纳其数据和附加数据的空间,并且迟早还是需要进行类似于memcpy
的操作。无论如何,您使用的语法绝对不符合C语言的规范。 - WhozCraigmalloc()
,在第二种情况下使用realloc()
,但所有情况都将使用memcpy()
来复制数据。 - Iharob Al Asimi