リンクリストの配列を作成しようとしていて、配列だけで問題が発生しました。コードは正常に実行されます(または少なくともprintfは関数内で実行されます)が、メインでループして印刷しようとすると、セグメンテーションフォルトが発生し、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;
}
ちょうどそれをデバッガー – rkosegi
で実行してください。文字列がLabelの名前フィールドに入り、関数がLabel固有のものだと思います。しかし、私はあなたが正しいと思います。 – jocal17