C - Код после 'if' (и внутри 'while') не выполняется - PullRequest
0 голосов
/ 18 мая 2018

Немного предыстории для этого вопроса, у меня есть связанный список с именами, в котором я не хочу находить вводимое пользователем имя. Для удобства я копирую имя (если оно найдено) в тот же буфер, например так:

  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->, которую я нашел, запустив в отладчике. Он не выполняет ничего в «если» (и даже если бы он выполнялся, «разрыв;» заставлял бы его выходить из цикла, а не запускать его снова), так что у меня нет идей. У кого-нибудь есть объяснение?

Заранее спасибо!

1 Ответ

0 голосов
/ 18 мая 2018

Без дополнительных данных, таких как наблюдения за значениями aux, невозможно быть уверенным в основной проблеме.Но вот вероятное объяснение ...


Если вы наблюдаете бесконечный цикл, где aux = aux->next;, кажется, ничего не делает, это должно означать, что aux->next равно aux, то есть aux указывает насам.Обычно хвост связанного списка указывает на NULL.

Конечно, структуру циклического списка необходимо было бы исправить в другом месте, так как список не создается в предоставленном коде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...