C - "if"之后(以及"while"内)的代码不执行



这个问题的一些背景,我有一个带有名称的链表,我不想在其中找到用户输入名称。为了方便起见,我将名称(如果找到(复制到同一个缓冲区,如下所示:

aux = filtCountriesHead;  //head of my list
while (aux != NULL){
if (strstr(aux->data.name, buffer) != NULL){
strcpy(buffer, aux->data.name);
foundName = 1;
break;
} 
aux = aux->next;  //this is skipped for some reason
}

当我运行它时,它会进入无限循环,因为它不执行 aux = aux->next 行,这是我通过在调试器中运行找到的。它不会在"if"中执行任何内容(即使它执行了,"break;"也会让它退出循环,而不是再次运行它(,所以我都不知道了。有人有解释吗?

提前感谢!

如果没有更多的数据,比如关于aux值的观测,就没有办法确定核心问题。但这里有一个可能的解释...


如果你观察到一个无限循环,其中aux = aux->next;似乎什么都不做,那一定意味着aux->next等于aux,即aux指向自身。通常,链表的尾部指向NULL

当然,循环列表结构需要在其他地方修复,因为列表不是在提供的代码中创建的。

最新更新