包含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);
答案 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]