gpt4 book ai didi

链表中的字符数组导致核心转储

转载 作者:行者123 更新时间:2023-11-30 15:24:09 25 4
gpt4 key购买 nike

我创建了一个链表程序,它与 c 中的整数完美配合。但如果将参数更改为 char 数组,并尝试执行 strcpy ,则会导致核心转储。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct node {
char mac[25];
struct node * next;
};
typedef struct node *list;

int main(void) {

lista c;

c = creoLista();
c = insert_start(c, "aa:bb:cc:dd:e1");
c = insert_start(c, "aa:bb:cc:dd:e2");
c = insert_start(c, "aa:bb:cc:dd:e3");

showList(c);
return 0;
}

list createList() {
return NULL;
}

list insert_start(list l1, char val[]) {
list n;
n =(list )malloc(sizeof(list));
strcpy(n->mac,val);
printf("ADDED: %s en ADDRESS:%p NEXT ADDRESS: %p\n", n->mac,(void *)(&n), (void *) (&n->next));
n -> next = l1;

return n;
}

void showList(list l1) {
while (l1 != NULL){
printf("Value: %s Address: %p\n",l1 -> mac,(void *) (&l1 -> next) );
l1 = l1 -> next;
}
}

关于我做错了什么以及为什么它适用于整数而不是字符数组的任何提示

谢谢

最佳答案

问题在于这个分配:

malloc(sizeof(list))

它显示了为指针创建类型别名的问题,因为您在这里只分配指针的大小,而不是整个结构。

关于链表中的字符数组导致核心转储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28546609/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com