这可能是一个非常初学者的问题,所以请对我放轻松......
我有一个结构数组如下
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]);
}
但这也行不通。
复制字符串之前需要分配内存。大多数实现都支持
strdup
来分配内存和复制字符串:
for (int i = 0; i < 20; i++) {
datas[slot].line[i] = strdup(line[i]);
}