【发布时间】:2017-11-21 05:02:15
【问题描述】:
我正在尝试创建一个链表数组,但只遇到了数组问题。代码运行良好(或者至少 printf 在函数中运行)但是当我尝试在 main 中循环打印时,我得到了一个分段错误,并且这些行没有在 newLabel 函数中打印。
void newLabel(char *n, Label **p, int len) {
p[len] = malloc(sizeof(Label));
p[len]->next = NULL;
p[len]->name = malloc(sizeof(char) * strlen(n)+1);
strcpy(p[len]->name, n);
printf("%s", p[len]->name);
++labels;
}
int main(int argc, char const *argv[]) {
Label *p[100];
for (labels = 0; labels < 5; labels++) {
newLabel("Hi", p, labels);
}
for (int i = 0; i <= labels; i++) {
printf("%s", p[labels]->name);
}
return 0;
}
【问题讨论】:
-
在调试器中运行即可
-
我猜是因为字符串进入了标签的名称字段,并且函数特定于标签。但我想你是对的。