我正在尝试创建一个链表,但到目前为止,我一直遇到分段错误。
通过一些测试,我设法找到了它发生的地方,但我不确定为什么会发生。
它在以下行触发:tempo->fileName = str;
是因为我试图对指针进行赋值,还是因为我不知道其他原因?
typedef struct listnode{
struct listnode* next;
char* fileName;
} listnode;
struct listnode* head;
//This section of code will be dedicated to the creation and management
//of the listnode functions
listnode* createNode(char* str, listnode* next){
listnode* tempo;
tempo = (listnode*)malloc(sizeof(struct listnode));
if(tempo = NULL){
printf("Error creating space for new node.n");
exit(0);
}
tempo->fileName = str;
tempo->next = next;
return tempo;
}
条件if(tempo = NULL)
中存在错误。不是比较tempo == NULL
,而是分配tempo = NULL
。然后执行tempo->fileName = str
,这实际上是在访问NULL
指针。仅仅因为你在写一个条件,它不会使=
运算符成为相等运算符,它仍然是一个赋值运算符。比较运算符为==
。
将条件更改为:
if(tempo == NULL)