我需要一个char []数组并将它的值复制到另一个,但我每次都失败。
它使用以下格式:
char array[] = { 0x00, 0x00, 0x00 }
然而,当我尝试这样做时:
char array[] = char new_array[];
它失败了,即使new_array和原版一样。
非常感谢任何帮助。
由于
答案 0 :(得分:4)
要在运行时复制,通常的C方法是使用strncpy
或memcpy
函数。
如果你想在编译时将两个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
以匹配new_array
。就是这样:
memcpy(new_array, array, sizeof(array));
/* ^ ^ ^
| | +--- size in bytes
| +-------------- source array
+-------------------------destination array
*/
库编写者选择首先使用目的地对参数进行排序,因为它与赋值中的顺序相同:destination = source
。
没有语言级内置方法可以使用这样的原始数组复制C,Objective-C或C ++中的数组。 C ++鼓励人们使用std::vector
,而Objective-C鼓励使用NSArray
。