是否可以从2D数组中为结构分配一个数组

时间:2018-04-10 16:46:06

标签: c pointers struct

我无法弄清楚如何快速初始化一堆结构。我不知道需要为它们分配一个字符数组。代码如下:

typedef struct {
    char name[5];
} s;

s * buildS() {    
    char names[2][5] = { "name", "foo"};
    s stru[2];

    for (int i = 0; i < 2; i++) {
        s tmp;
        tmp.name = names + i;
        stru[i] = tmp;
    }

    return stru;
}

s.name = names + 1;行是出现错误的地方:

error: incompatible types when assigning to type 'char[5]' from type 'char (*)[5]'

我在这里缺少什么?我可以将一个内部数组分配给结构的数组字段吗?

编辑:修复了代码中糟糕的语法,我的错误

1 个答案:

答案 0 :(得分:1)

我猜你试图将包含名称的数组拆分为两个结构。

根据你所做的事情做到这一点:

加入<string.h>

然后改变:

for (int i = 0; i < 2; i++) {
        s tmp;
        s.name = names + i;
    }

致:

for (int i = 0; i < 2; i++) {
       strcpy(stru[i].name, names[i]);
}
相关问题