gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-31 01:54:12 26 4
gpt4 key购买 nike

我正在使用 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 ,您将超出 newValue 中的一个字符“限制”当试图将所有内容复制到 myArray 时.

修复应该非常简单:

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

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

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

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

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com