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

标签 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(myArray, newValue, sizeof(myArray));

我做错了什么?

最佳答案

您的 newValue 的类型为 char,并且出于所有意图和目的,您的 myArray 的类型为 char*.

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

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

修复应该非常简单:

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

完成后,这应该可以工作。当然,这是假设 myArray 的大小实际上大于或等于 255 :)

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

关于c++ - 如何在 C 中将 u_char* 转换为 char[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10022003/

相关文章:

c - 带有 C 共享库的 ffi Node.js 中的 undefined symbol - libmodbus

c++ - Blackmagic 帧 : convert from yuv to RGB to use in openCV

C++ 使用参数的默认值

c++ - 不确定 Dekkers 算法做错了什么

c++将对纯虚类的引用存储为类的成员

php - 如何只在 MySQL 结果中获取关联数组?

c - OpenGL矩形动画

c - dumpbin 报告静态库的错误目标架构

java - Java中Hypergraph上实现节点的JSON结构

arrays - 在 CakePHP 3.x Controller 中获取一列