我正在尝试创建一个链表,到目前为止,我一直遇到分段错误。
通过一些测试,我试图找出它发生的位置,但是我不确定为什么会发生。
它在以下行触发: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;
}
答案 0 :(得分:1)
条件if(tempo = NULL)
中存在错误。而不是比较tempo == NULL
,而是分配tempo = NULL
。然后执行tempo->fileName = str
,它实际上是在访问NULL
指针。仅仅因为您在编写条件语句,并不能使=
运算符成为相等运算符,所以它仍然是赋值运算符。比较运算符为==
。
将条件更改为:
if(tempo == NULL)