gpt4 book ai didi

c - strcmp 的段错误(列表)

转载 作者:行者123 更新时间:2023-11-30 21:44:13 24 4
gpt4 key购买 nike

我有一个列表,我想从该列表中删除比较人员姓名的寄存器。这是删除函数:

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 新手,已经尝试了所有方法,但无法解决此错误。

最佳答案

在 strcmp 中使用 pCurrent!=NULL 后测试它已经太晚了。

   while (pCurrent!=NULL && strcmp(name,pCurrent->person.name)){ // test names are different

关于c - strcmp 的段错误(列表),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15604965/

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