我正在使用C
,我有uint8_t array
hex
个值,我想通过memcpy
动态添加另一个值。
我有一个数组:uint8_t sample['0x23', '0x34',...]
e.t.c.
...我想稍后将Hex character
复制到array
。这是怎么做到的?如果之前已经回答过这个问题,抱歉,我找不到了。我是C
的新手,这些pointers
给了我地狱。提前谢谢。
答案 0 :(得分:1)
你可以写简单
sample[4] = '\x0A';
如果你想使用memcpy,那么有效代码将是
memcpy( &sample[4], "\x0A", 1 );
或
memcpy( sample + 4, "\x0A", 1 );
那就是你需要使用字符串文字而不是字符常量。
答案 1 :(得分:0)
我想知道真正被问到的是如何在数组的末尾添加新值。
在C中,没有“数组”类,因此您必须自己管理内存和关联指针,或使用预先定义的函数库来完成所有操作。让我们假设前者,即程序员自己进行管理。
在将新值分配或复制到阵列之前,您需要确保有足够的空间。管理此方法的一种方法如下:
int array_size = 10;
uint8_t sample[array_size];
uint8_t i = 4; /* assuming array index cannot exceed 255 */
if (i < array_size) {
sample[i] = 0x0a;
}
这里的关键是你的样本数组只占用10个字节的内存,你需要确保你对样本数组的访问不会超出那个范围。
如果确实希望将值附加到数组的末尾,则必须添加另一个变量以跟踪最后一个插入点/索引,并在示例中将其用于i
。