【问题标题】:How to convert u_char* to char[] in C如何在 C 中将 u_char* 转换为 char[]
【发布时间】:2012-04-05 02:43:10
【问题描述】:

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

我做错了什么?

【问题讨论】:

    标签: c++ c arrays char memcpy


    【解决方案1】:

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

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

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

    修复应该很简单:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-22
      • 2019-11-11
      • 2020-08-04
      • 2015-12-22
      • 2021-11-30
      • 2015-04-02
      • 2014-02-09
      • 1970-01-01
      相关资源
      最近更新 更多