C 是否可以从二维数组中为结构指定数组

C 是否可以从二维数组中为结构指定数组,c,pointers,struct,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

我不知道如何快速初始化一堆结构。我需要给他们分配一个字符数组。代码如下:

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;
}
typedef结构{
字符名[5];
}s;
s*buildS(){
字符名[2][5]={“name”,“foo”};
s-stru[2];
对于(int i=0;i<2;i++){
s tmp;
tmp.name=名称+i;
stru[i]=tmp;
}
返回序列;
}
s.name=names+1行是出现错误的位置:

错误:从类型“char(*)[5]”分配给类型“char[5]”时,类型不兼容。

我错过了什么?我可以将内部数组分配给结构的数组字段吗


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

我想你是在尝试将包含名称的数组拆分为两个结构

要根据您所做的工作进行此操作:

包括

然后改变:

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

for(int i=0;i<2;i++){
strcpy(stru[i].名称,名称[i]);
}

strncpy(s.name,&names[i],strlen(names[i])?看看这个答案:s是类型……。对不起,代码中有一些错误,我只是想把我想做的事情的大概想法写下来。这并不是我所说的Darray分配的内存。你不能把它指向另一个地方。
for (int i = 0; i < 2; i++) {
       strcpy(stru[i].name, names[i]);
}