struct中的struct copy,其中struct是元素

时间:2016-12-14 09:10:21

标签: c struct

您好我有以下情况

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

但是我通过代码这一行似乎不起作用。我该如何复制?

3 个答案:

答案 0 :(得分:2)

  

但是我通过代码这一行似乎不起作用。我该如何复制?

复制像

这样的结构是完全正确的
first_school = second_school; // valid

如果它不能按预期工作,那么错误就在其他地方。例如,您需要为字符串成员执行strcpy()

答案 1 :(得分:1)

结构是可以分配的值。它们可以包含数组,它们自己是不可分配的,但是在struct内部可以使它成为可能。

该代码没问题,除非你需要颠倒声明的顺序,因为School引用NameSport必须先声明它们。

我对它进行了测试,并且在撤消声明顺序后工作正常,这会打印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()之类的复制。但是,您不能像执行intstruct一样按照分配复制数组。