2

我正在使用 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));

我究竟做错了什么?

4

1 回答 1

3

newValue的属于 type char,出于所有意图和目的,你myArray的属于 type char*

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

当您尝试使用strncpyor时memcpy,当您尝试newValue将所有内容复制到myArray.

修复应该很简单:

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

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

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

于 2012-04-05T02:48:25.267 回答