您好我有以下情况
typedef struct
{
int a;
Name team[5];
Sport sport[5];
} School;
where Name and Sport are also structs,
typedef struct
{
char arry[20];
}Name;
typedef struct
{
char arry[20];
int tag;
}Sport;
然后
School first_school, second_school;
我单独填充它们,然后在某些时候我做
first_school = second_school
但是我通过代码这一行似乎不起作用。我该如何复制?
答案 0 :(得分:2)
但是我通过代码这一行似乎不起作用。我该如何复制?
复制像
这样的结构是完全正确的first_school = second_school; // valid
如果它不能按预期工作,那么错误就在其他地方。例如,您需要为字符串成员执行strcpy()
。
答案 1 :(得分:1)
结构是可以分配的值。它们可以包含数组,它们自己是不可分配的,但是在struct
内部可以使它成为可能。
该代码没问题,除非你需要颠倒声明的顺序,因为School
引用Name
和Sport
必须先声明它们。
我对它进行了测试,并且在撤消声明顺序后工作正常,这会打印hello
:
int main(void) {
School foo, bar;
strcpy(bar.team[0].arry, "hello");
foo = bar;
printf("'%s'\n", foo.team[0].arry);
return 0;
}
初始化second_shool
时可能还有其他问题,或者您无法验证它是否有效。
答案 2 :(得分:-2)
它适用于大多数成员,但您有一个无法像arry
那样复制的成员。您应该一次从目标复制一个元素到目标实例。
请注意,有些功能可以处理memcpy()
之类的复制。但是,您不能像执行int
或struct
一样按照分配复制数组。