我有一个列表,我想从这个列表中删除比较人名的寄存器。 这是函数remove:
void remove(char name[]){
if (pBegin!=NULL){
Nodo *pcopy;
if (!strcmp(name,pBegin->person.name)){
pcopy=pBegin;
pBegin=pBegin->pNext;
printf("REMOVED!\n");
free(pcopy);
}
else{
Nodo *pCurrent=pBegin;
Nodo *pPrevious=NULL;
while ((strcmp(name,pCurrent->person.name)) && (pCurrent!=NULL)){ // here is probably the error
pPrevious=pCurrent;
pCurrent=pCurrent->pNext;
}
if (pBegin==NULL)
printf("The name was not found!\n");
else{
pPrevious->pNext=pCurrent->pNext;
printf("REMOVED!\n");
free(pCurrent);
}
}
}
else
printf("empty list!\n");
}
抱歉这个大帖子和视觉上很难看。这是我在这里发表的第一篇文章,我是C的新手,已经尝试了一切,但无法解决这个错误。
答案 0 :(得分:1)
在strcmp中使用它后测试pCurrent!= NULL为时已晚。
while (pCurrent!=NULL && strcmp(name,pCurrent->person.name)){ // test names are different