将 char * 数组深拷贝到结构体中?

问题描述 投票:0回答:1

这可能是一个非常初学者的问题,所以请对我放轻松......

我有一个结构数组如下

struct Data {
   int lineno;
   char* line[10];
}

struct Data datas[20] = {{ 0, NULL }};

我正在尝试将 char * [] 深度复制到数组元素中,但我不断遇到段错误。

我尝试过以下方法

for (int i = 0; i < 20; i++) {
    strcpy(datas[slot].line[i], line[i]);
}

但这不起作用。 我认为我的问题是尝试复制行中的空值,所以我尝试了以下方法

for (int i = 0; i < 20; i++) {
    if (line[i])
        strcpy(datas[slot].line[i], line[i]);
}

但这也行不通。

arrays c char
1个回答
0
投票

复制字符串之前需要分配内存。大多数实现都支持

strdup
来分配内存和复制字符串:

for (int i = 0; i < 20; i++) {
    datas[slot].line[i] = strdup(line[i]);
}
© www.soinside.com 2019 - 2024. All rights reserved.