如何将 uint8_t * 复制到 char 数组

How to copy uint8_t * to char array

我正在尝试将 uint8_t* 复制到一个字符数组中,uint8_t* 是非终止的,但我有另一个 uint8_t 和消息的长度。 如何将 uint8_t* 复制到 char 数组中而不出现段错误。

uint8_t *name; //Set to something beforehand, it's part of an server STUN.
uint8 name_length; //Also set to something I just know is less than 255.

//I've tried
char nameArray[255];
memcpy(nameArray, name, name_length-1);
nameArray[name_length] = '[=11=]';

由于读取大小无效导致的段错误

由于 memcpy() 调用处变量 name_length 的整数提升被转换为 int。如果该值为 0(零),则减去 1 的结果为 -1。然后将其转换为 size_t,得到 SIZE_MAX。 memcpy() 愉快地开始复制该数量,但超出了允许的地址范围限制。

因为1的减法一开始就错了,去掉。