1

我需要获取一个 char [] 数组并将其值复制到另一个数组,但我每次都失败。

它使用以下格式工作:

char array[] = { 0x00, 0x00, 0x00 }

但是,当我尝试这样做时:

char array[] = char new_array[];

它失败了,即使 new_array 就像原来的一样。

任何帮助将不胜感激。

谢谢

4

1 回答 1

4

要在运行时进行复制,通常的 C 方法是使用strncpyormemcpy函数。

如果您希望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.

不过,我仍然不确定你想要什么。

于 2012-06-03T01:34:00.537 回答