我在.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;
}
}
...
包含所有需要的库。编译器没有检测到任何错误或警告,但程序不能正常工作 - 执行后它什么都不做。这段代码只是庞大程序的一部分,所以我想知道,这个结构是否正确以及程序中的其他地方是否有错误。感谢
答案 0 :(得分:5)
如果没有匹配,你想继续循环。将语句counter++;
放在if
语句之外:
while (counter != COUNT) {
if (strcmp(names[counter], string) == 0) {
return 0;
}
counter++;
}
使用size_t
代替counter
代替int
:size_t counter = 0;
答案 1 :(得分:1)
在增加计数器之前你有return 0
if (strcmp(names[counter], string) == 0) {
return 0;
counter++;
}