2014-11-16 3 views
0

У меня есть кусок кода, как это в .c файл, который определяет, является ли tPerson.name равно одному из элементов сопза полукокса * имена [COUNT] или нет:сравнения строк STRUCT элемент

define COUNT 3 
... 
typedef struct { 
int age; 
char *name; 
} tPerson; 

const char* names[COUNT] = { 
    "xxx", "yyy", "zzz" 
}; 
.... 
char string[128]; 
strcpy(string, tPerson.name);//tPerson.name is already initizialed 
int counter = 0; 
while (counter != COUNT) { 
    if (strcmp(names[counter], string) == 0) { 
     counter++; 
     return 0; 
    } 
} 
... 

Все необходимые библиотеки включены. Компилятор не обнаруживает никаких ошибок или предупреждений, но программа не работает так, как должна - ничего не делает после выполнения. Этот фрагмент кода является лишь частью огромной программы, поэтому я хотел бы знать, правильна ли эта конструкция, а где-то еще в программе ошибка или нет. Благодаря

+0

Что такое точка '' счетчика ++ в цикле после возвращения заявления? –

+0

его уже исправлено, во всяком случае это не была главной проблемой .. все еще не работает – wrz90

+0

Затем обновите свой ответ, чтобы другие не смущались им. –

ответ

1

Вы return 0 до увеличения прилавка

if (strcmp(names[counter], string) == 0) { 
    return 0; 
    counter++; 
} 
+0

да спасибо, FIXED - но все еще не работает – wrz90

5

Вы хотите продолжить цикл, если нет совпадения. Помещенный заявление counter++; вне if заявление:

while (counter != COUNT) { 
    if (strcmp(names[counter], string) == 0) { 
     return 0; 
    } 
    counter++; 
} 

И использовать size_t для counter вместо int: size_t counter = 0;

Смежные вопросы