Как сравнить два разных указателя, которые ссылаются на разные структуры? - 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;
}
Объяснение кода листинга программы
В данном коде выполняется сравнение двух указателей, которые ссылаются на разные структуры.
- Создается условие для цикла while, которое проверяет, что указатель p1 не равен нулю.
- Внутри цикла while происходит проверка на равенство идентификаторов структур, на которые указывают указатели p1 и p.
- Если идентификаторы равны, то переменной i присваивается значение 1 и цикл прерывается.
- Если идентификаторы не равны, то указатель p1 переходит к следующей структуре в списке, на которую он указывает.
- Цикл продолжается до тех пор, пока не будет выполнено условие выхода из цикла.
- После выполнения цикла, значение переменной i будет равно 1, если идентификаторы структур были равны, и 0 в противном случае.