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]);
}