Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在C中将u_char*转换为char[]_C++_C_Arrays_Char_Memcpy - Fatal编程技术网

C++ 如何在C中将u_char*转换为char[]

C++ 如何在C中将u_char*转换为char[],c++,c,arrays,char,memcpy,C++,C,Arrays,Char,Memcpy,我正在使用snmp,requests->requestvb->val.string函数返回一个u_char*,我试图将其存储到一个char[255]中 u_char newValue = *(requests->requestvb->val.string) char myArray[255]; 我尝试了几种方法将newValue的内容复制到myArray中,但似乎一切都出了问题。我做错了什么 我试过了 memcpy(myArray,newValue) 另一次尝试strncopy(m

我正在使用snmp,requests->requestvb->val.string函数返回一个u_char*,我试图将其存储到一个char[255]中

u_char newValue = *(requests->requestvb->val.string)
char myArray[255];
我尝试了几种方法将newValue的内容复制到myArray中,但似乎一切都出了问题。我做错了什么

我试过了
memcpy(myArray,newValue)

另一次尝试
strncopy(myArray,newValue,sizeof(myArray))


我做错了什么?

您的
newValue
类型为
char
,出于所有目的,您的
myArray
类型为
char*

首先,我假设您正确地使用了
memcpy
,并且传入了3个参数,而不是2个,其中第3个参数与您在
strncpy
中使用的参数相同

当您尝试使用
strncpy
memcpy
时,尝试将所有内容复制到
myArray
时,您超出了
newValue
中的一个字符“限制”

解决方法应该非常简单:

u_char* newValue = requests->requestvb->val.string;
一旦你做到了这一点,这应该会起作用。当然,这是假设
myArray
的大小实际上大于或等于255:)

作为旁注(这应该不言而喻),如果您打算打印,请确保您的
myArray
末尾有一个空终止字符。在执行复制操作后没有打印,然后尝试打印是一个非常常见的错误,也可能导致seg故障