我需要获取一个 char [] 数组并将其值复制到另一个数组,但我每次都失败。
它使用以下格式工作:
char array[] = { 0x00, 0x00, 0x00 }
但是,当我尝试这样做时:
char array[] = char new_array[];
它失败了,即使 new_array 就像原来的一样。
任何帮助将不胜感激。
谢谢
我需要获取一个 char [] 数组并将其值复制到另一个数组,但我每次都失败。
它使用以下格式工作:
char array[] = { 0x00, 0x00, 0x00 }
但是,当我尝试这样做时:
char array[] = char new_array[];
它失败了,即使 new_array 就像原来的一样。
任何帮助将不胜感激。
谢谢
要在运行时进行复制,通常的 C 方法是使用strncpy
ormemcpy
函数。
如果您希望char
在编译时将两个数组初始化为相同的常量初始化程序,您可能会被使用#define
:
#define ARRAY_INIT { 0x00, 0x00, 0x00 }
char array[] = ARRAY_INIT;
char new_array[] = ARRAY_INIT;
问题是,这很少做,因为通常有更好的实现。
编辑:好的,所以你想在运行时复制数组。这是通过memcpy
, 部分<string.h>
(所有地方)完成的。
如果我没看错,您的初始条件如下:
char array[] = { 0x00, 0x00, 0x00 };
char new_array[] = { 0x01, 0x00, 0xFF };
然后你做一些事情,改变数组的内容,完成后,你想设置array
为 match new_array
。就是这样:
memcpy(new_array, array, sizeof(array));
/* ^ ^ ^
| | +--- size in bytes
| +-------------- source array
+-------------------------destination array
*/
库编写者选择首先使用目标对参数进行排序,因为这与 assignment: 中的顺序相同destination = source
。
没有语言级别的内置方法可以在 C、Objective-C 或 C++ 中使用像这样的原始数组复制数组。C++ 鼓励人们使用std::vector
.Objective-C 鼓励使用NSArray
.
不过,我仍然不确定你想要什么。