Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > НЕ работает конструкция if


Автор: niknor 17.5.2006, 21:24
Почему у меня вылетает if даже когда условие верно
Код

typedef struct Item{
    int NomGr;
    char Data[9];
    int NomAud;
    char Discip[12];
    char Prepod[12];
}TItem;

typedef struct Node{
    TItem item;
    Node *link;
}TNode, *TPNode;

//бла бла бла

//бла бла бла

void viborka(TPNode &head)
{
    char fam[12];
    TPNode pnext;
    pnext=head;
    rus("Введите Фамилию преподавателя:");
    cin>>fam;
    while(pnext->link!=NULL)
    {
        
        if(pnext->item.Prepod==fam)//ВОТ ТУТ ТО ОН И ВЫЛЕТАЕт
        {
            cout<<fam;
            rus(" занят ");
            cout<<pnext->item.Data<<endl;
        }
            pnext=pnext->link;
    }

}
 

Автор: Void 17.5.2006, 21:29
Потому что ты сравниваешь указатели на строки, а не сами строки. См. ф-цию strcmp. 

Автор: likehood 17.5.2006, 21:30
Неверно сравниваешь строки, надо так:
Код

#include <string.h>
if (!strcmp(pnext->item.Prepod), fam))

 

Автор: Fazil6 17.5.2006, 21:31
куда он вылетает? 

Автор: niknor 17.5.2006, 21:33
А если это массивы char то тоже прокатит smile 
 

Автор: DeadSoul 17.5.2006, 21:40
Цитата(niknor @  17.5.2006,  21:33 Найти цитируемый пост)
А если это массивы char то тоже прокатит

Нет. Use memcmp+прочитай книгу по С++ 

Автор: niknor 17.5.2006, 21:47
спасибо
 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)