У меня есть такой код в файле.c, который определяет, является ли tPerson.name равным одному из элементов const char * names [COUNT] или нет:
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;
}
}
...
Все необходимые библиотеки включены. Компилятор не обнаруживает никаких ошибок или предупреждений, но программа не работает так, как должна - ничего не делает после выполнения. Этот фрагмент кода является лишь частью огромной программы, поэтому я хотел бы знать, правильна ли эта конструкция, а где-то еще в программе ошибка или нет. благодаря
Вы хотите продолжить цикл, если нет совпадения. Поставьте выражение counter++;
вне оператора if
:
while (counter != COUNT) {
if (strcmp(names[counter], string) == 0) {
return 0;
}
counter++;
}
И используйте size_t
для counter
вместо int
: size_t counter = 0;
У вас есть return 0
перед увеличением счетчика
if (strcmp(names[counter], string) == 0) {
return 0;
counter++;
}
counter++
в вашем цикле после оператора return?