我正在创建一个新的结构列表,我将在其中保存关于一系列汽车的一些信息。我编译代码没有问题,但是一旦我运行它,我得到一个分段错误。
这段代码是有问题的:
car* insertNode(car *head){
car *temp;
car *prec;
temp=(car *)malloc(sizeof(car));
if(temp!=NULL){
temp->next=NULL;
if(head==NULL)
head=temp;
else{//Raggiungi il termine della lista
for(prec=head;prec->next!=NULL;prec=prec->next);
prec->next=temp;
}
getData(temp);
printf("Inserire l'anno di immatricolazione dell'auto: ");
scanf("%i",&temp->anno);
}
else
printf("Memoria esaurita!n");
return head;
}
我试着调试这个,我发现问题出在有for循环的那行代码上。有什么问题吗?我只使用<studio。h>和& lt; stdlib.h>我不能使用其他库来完成这项工作,但我不知道问题出在哪里。
通过阅读你的代码,它似乎是正确的;如果它产生分割错误,我认为唯一的方法是因为"头";可能没有正确初始化为null
此外,调试空循环可能很困难。考虑(仅为了调试目的)在循环中添加一些虚拟语句(即增加计数器)。
您还应该使用内存视图(如果可能的话,在您的调试器中)来检查指针所指向的内存位置的内容。
祝你好运!