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

How to convert u_char* to char[] in C

本文关键字:char 转换 中将      更新时间:2023-10-16

我正在使用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个,其中第三个参数与您在strncpy中使用的参数相同。

当您尝试使用strncpymemcpy时,当您尝试将所有内容复制到myArray时,就超出了newValue中一个字符的"限制"。

修复应该很简单:

u_char* newValue = requests->requestvb->val.string;

一旦你做到了,这应该会奏效。当然,这是假设myArray的大小实际上大于或等于255:)

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