如何复制 array_src TO> destination_array,从目的地的某个索引开始? (使用 strcpy() )

How to copy array_src TO> destination_array, starting at certain index at destination? ( using strcpy() )

一个 struct node 包含 {... char opcode_CHAR[6]; }

声明的指针 struct node *pointer2 指向该结构类型的节点;

得到了 char temp_array[6].

j = 6 - sizeof(temp_array);

所以根据 sizeof(temp_array), 我会复制到opcode_CHAR.
的某个索引j 如果 sizeof(temp_array) == 4j = 2;
开始复制到 opcode_CHAR 如果 sizeof(temp_array) == 2 复制到 opcode_CHARj = 4; 等开头...)

我收到编译警告:

warning: passing argument 1 of 'strcmp' makes pointer from integer without a cast [-Wint-conversion]

因为这个:strcpy(pointer2->opcode_CHAR[j], temp_array);

我在 strcpy(pointer2->opcode_CHAR, temp_array); 之前尝试了 pointer2->opcode_CHAR = pointer2->opcode_CHAR[j];,以便它指向我想要的索引 j,而不是数组的开头。但是没有用。

我应该像这样添加 j 吗? strcpy(pointer2->opcode_CHAR+j, temp_array);

strcpy 需要两个指针。

opcode_CHAR[j] 等价于 *(opcode_CHAR+j) 是值而不是指针。

这就是为什么 pointer2->opcode_CHAR = pointer2->opcode_CHAR[j]; 没有工作,你给数组指针赋值。幸运的是,编译器应该告诉您该数组是只读的,因为如果您之后尝试访问该数组,这会造成很大的混乱。

要获得指向您想要的值的指针,您可以按照您的建议执行 opcode_CHAR+j 或我更喜欢的 &opcode_CHAR[j],因为它更明显。

您显然必须从结构中获取属性,因此您必须在取消引用之前访问数组:

&(pointer2->opcode_CHAR[j])

所以完整的调用应该是。

strcpy(pointer2->opcode_CHAR+j, temp_array);

strcpy(&(pointer2->opcode_CHAR[j]), temp_array);

请确保您的字符数组在 opcode_CHAR[5]

上是 zero-terminated