【问题标题】:Is it possible to assign a struct an array from a 2D array是否可以从二维数组中为结构分配数组
【发布时间】:2018-04-10 16:46:06
【问题描述】:

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

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]'

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

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

【问题讨论】:

  • strncpy(s.name, &amp;names[i], strlen(names[i]));?
  • s 是类型........
  • 对不起,代码中有一些错误,我只是想把我想要做的事情的大致想法写下来。这不是我粘贴的字面意思
  • 数组已分配内存。您不能将其指向其他位置。

标签: c pointers struct


【解决方案1】:

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

根据你所做的来做到这一点:

包括&lt;string.h&gt;

然后改变:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-02
    • 1970-01-01
    • 2021-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多