如何将 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的减法一开始就错了,去掉。
我正在尝试将 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的减法一开始就错了,去掉。