Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/162.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++字符数组转换为十六进制数组或字符数组 我希望能得到一些C++专家的建议。我有一个字符数组 <unsigned char ch1[100];>_C++ - Fatal编程技术网

C++字符数组转换为十六进制数组或字符数组 我希望能得到一些C++专家的建议。我有一个字符数组 <unsigned char ch1[100];>

C++字符数组转换为十六进制数组或字符数组 我希望能得到一些C++专家的建议。我有一个字符数组 <unsigned char ch1[100];>,c++,C++,数据ASCII码在这个最大6或8个数组空间中填充,其余为空。我只想将数组中的有效位转换为十六进制或再次转换为字符数组。我试过了 <memcpy (ch1,ch2,sizeof(ch1))> 但所有垃圾值也会被复制…: <strcpy gives me an error> 复制的字节数也是动态的1倍:-4;2次:-6次 所以只复制实际初始化的字符。作为程序员,您有责任跟踪哪些已初始化,哪些未初始化。您知道数组中有多少有效字节吗?如果是,您可以将该

数据ASCII码在这个最大6或8个数组空间中填充,其余为空。我只想将数组中的有效位转换为十六进制或再次转换为字符数组。我试过了

     <memcpy (ch1,ch2,sizeof(ch1))>
但所有垃圾值也会被复制…:

       <strcpy gives me an error>

复制的字节数也是动态的1倍:-4;2次:-6次

所以只复制实际初始化的字符。作为程序员,您有责任跟踪哪些已初始化,哪些未初始化。

您知道数组中有多少有效字节吗?如果是,您可以将该数字作为memcpy的第三个参数传入

否则,您可以对数组进行零初始化并使用strcpy,strcpy将在第一个零处停止:

char ch1[100];
// zero out the array so we'll know where to stop copying
memset(ch1, 0, sizeof(ch1));

... data gets filled here ....

strcpy (ch2, ch1);
// zero out array again so we'll catch the next characters that come in
memset(ch1, 0, sizeof(ch1));

... life goes on ...

请详细说明有效位。复制的字节数是动态的,不断更改:我将设置ch1 101字节,以确保始终具有“\0”终止符。您还假设输入不包含“\0”字符。因此请使用上述代码。零初始化数组,用strcpy读取,然后再将其归零。@Martin York:100适合memset,我估计他只需要输入6-8个字符。但总的来说,我对这个项目感觉不太好