C++ 如何在C中将u_char*转换为char[]
我正在使用snmp,requests->requestvb->val.string函数返回一个u_char*,我试图将其存储到一个char[255]中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
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故障