由于strstr函数,我在此方法内有一个无限循环。是因为我将struct类型匹配为char类型吗?

car* find(char* type){

    car* stringCurr = list_head();
    while(stringCurr != NULL){
        if(strstr(stringCurr->info, type)){  //This line
           return stringCurr;
        }
    }
  return NULL;
}


结构:

typedef struct Machine{

  char info[128];
  struct Machine* next;

}car;


编辑:

目标是创建搜索功能,如果在列表中找到对象,则返回NULL

最佳答案

您错过了增加stringCurr的机会。您需要在while循环中执行与stringCurr = stringCurr->next类似的操作。

car* find(char* type){

    car* stringCurr = list_head();
    while(stringCurr != NULL){
        if(strstr(stringCurr->info, type)){  //This line
           return stringCurr;
        }
       stringCurr = stringCurr -> next;
    }
  return NULL;
}

10-08 08:32