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

时间:2018-04-11 06:59:29

标签: c pointers strcpy

包含struct node

{... char opcode_CHAR[6]; }

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

得到char temp_array[6]

j = 6 - sizeof(temp_array);

因此取决于sizeof(temp_array), 我将复制到j的某个索引opcode_CHAR 如果从sizeof(temp_array) == 4开始,opcode_CHAR生病了j = 2; 如果从sizeof(temp_array) == 2等开始opcode_CHAR生病了j = 4;,那么......)

我收到了编译警告:

  

警告:传递' strcmp'的参数1从整数生成指针   没有演员[-Wint-conversion]

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

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

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

1 个答案:

答案 0 :(得分:1)

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);

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

上以零终止