我现在的情况是,我需要做一个字节数组缓冲区,我可以在程序的整个生命周期中进行更新如果我有两个C数组
unsigned char buffer[1400];
unsigned char data[64];
数据数组的值将在整个程序中不断变化,并通过各种循环(64始终是最大长度)传递,此时其值的范围将添加到缓冲区数组中。例如,假设数据数组中有64个不同的十六进制值,我想将这些值的特定范围添加到缓冲区中。这就是我陷入困境的地方,我的数据数组是这样的。。
data[64] = {0x00, 0xeb, 0xff, etc...}
在C#中,我将执行以下操作来选择所需的范围并将其添加到缓冲区
buffer.AddRange(data.Skip(6).Take(30));
但我完全不知道如何在C语言中实现这一点。我对这门语言还很陌生,所以我看到有人提到你会使用realloc,但我仍在试图理解它是如何工作的我将非常感谢一些指导,希望我已经提供了足够的信息谢谢!
编辑注:1400的缓冲区数组大小只是实际的最大值,从技术上讲,它可能是介于两者之间的动态范围即使它永远达不到最大值也会引起任何问题吗?
最佳答案
看起来你想要像
#include <string.h>
...
/* sizeof data is 64 if data is an array[64] of (unsigned) char */
memcpy (&buffer[6], data, sizeof data);
这会将所有64个数据八位字节复制到第7个缓冲区字节,然后再复制。如果你想复制更少的数据,
memcpy (&buffer[6], &data[42], 3);
复制以
data[42]
开头的三个字节。关于c - 试图了解从C#中添加到C中的数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22176609/