Как сравнить два разных указателя, которые ссылаются на разные структуры? - C (СИ)

Узнай цену своей работы

Формулировка задачи:

как сравнить два разных указателя, которые ссылаются на разные структуры? p->id с p1->id пробую вот так, но видимо это не верно раз i не меняется с 0 на 1; пробовал присваивать p->id с p1->id char tmp1[25] и tmp2[25] соответственно и проверять их через strcmp(), но не выходит.
// вот структуры
struct dep
{
    char id[25];
    char depname[25];
    char adress[25];
    dep *next;
};
 
struct people
{
    char id[25];
    char coid[25];
    char name[25];
    char birth[25];
    char postid[25];
    char empty[25];
    people *next;
};
 
// вот примерный цикл проверки
while(p1!=NULL)
        {
            if (p1->id==p->id) {i=1; break}
            p1=p1 -> next;
        }

Решение задачи: «Как сравнить два разных указателя, которые ссылаются на разные структуры?»

textual
Листинг программы
while (p1)
{  
   if (!strcmp(p1->id,p->id)) 
   {
      i = 1; 
      break
   }
 
   p1 = p1 -> next;
}

Объяснение кода листинга программы

В данном коде выполняется сравнение двух указателей, которые ссылаются на разные структуры.

  1. Создается условие для цикла while, которое проверяет, что указатель p1 не равен нулю.
  2. Внутри цикла while происходит проверка на равенство идентификаторов структур, на которые указывают указатели p1 и p.
  3. Если идентификаторы равны, то переменной i присваивается значение 1 и цикл прерывается.
  4. Если идентификаторы не равны, то указатель p1 переходит к следующей структуре в списке, на которую он указывает.
  5. Цикл продолжается до тех пор, пока не будет выполнено условие выхода из цикла.
  6. После выполнения цикла, значение переменной i будет равно 1, если идентификаторы структур были равны, и 0 в противном случае.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4 из 5
Похожие ответы