如何复制 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) == 4
从 j = 2;
开始复制到 opcode_CHAR
如果 sizeof(temp_array) == 2
复制到 opcode_CHAR
以 j = 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
一个 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) == 4
从 j = 2;
开始复制到 opcode_CHAR
如果 sizeof(temp_array) == 2
复制到 opcode_CHAR
以 j = 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]