gpt4 book ai didi

c - 如何将 array_src 复制到> destination_array,从目标的某个索引开始? (使用 strcpy() )

转载 作者:行者123 更新时间:2023-11-30 14:49:15 24 4
gpt4 key购买 nike

一个结构节点,包含{... 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 会复制到以 j = 4; 开头的 opcode_CHAR 等...)

我收到编译警告:

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] 上以零结尾

关于c - 如何将 array_src 复制到> destination_array,从目标的某个索引开始? (使用 strcpy() ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49768478/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com