如何在C中将u_char*转换为char[]
How to convert u_char* to char[] in C
我正在使用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
中使用的参数相同。
当您尝试使用strncpy
或memcpy
时,当您尝试将所有内容复制到myArray
时,就超出了newValue
中一个字符的"限制"。
修复应该很简单:
u_char* newValue = requests->requestvb->val.string;
一旦你做到了,这应该会奏效。当然,这是假设myArray
的大小实际上大于或等于255:)
顺便说一句(这应该是不言而喻的),如果您计划打印myArray
,请确保它的末尾有一个空终止字符。在执行复制操作后没有终止字符,然后尝试打印是一个非常常见的错误,也可能导致seg错误。
相关文章:
- 将无符号char*转换为std::istream*C++
- 为什么这个函数将"const char*"转换为"void* const"而不是"const void*"
- 将函数参数"const char*"转换为"std::string_view"是
- C ++如何在使用"tolower"时将char转换为int
- 有没有办法在C++的赋值中将"char**"转换为"double"?
- JavaCPP 错误:无法将参数"1"的"char*"转换为"Abc*
- 为什么从 char 转换为 std::byte 可能是未定义的行为?
- 如何在虚幻引擎4中将char*转换为TCHAR?
- C++:将模板类型 char 转换为 std::string
- strcmp/char* 转换无法按预期工作
- C++中的SQLite char*转换
- 无法从 const char* 转换为 const char *&
- 在 C++ 中将 char 转换为 int,而无需符号位传播
- 如果必须包含西里尔字符,如何将 char* 转换为 std::string?
- 试图使用strCMP时的char转换错误
- 无法从'const char *'转换为'LPCTSTR'
- 将 std::vector<char> 转换为字符* 会导致字符缺陷
- 使用 static_cast 将 char 转换为 int c++
- 如何在 C++(MFC) 中将 char* 转换为 LPCTSTR
- 无法将const char转换为字符串构造字符串