与struct元素的字符串比较

时间:2014-11-16 17:20:57

标签: c++ c

我在.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;
    }
}
...

包含所有需要的库。编译器没有检测到任何错误或警告,但程序不能正常工作 - 执行后它什么都不做。这段代码只是庞大程序的一部分,所以我想知道,这个结构是否正确以及程序中的其他地方是否有错误。感谢

2 个答案:

答案 0 :(得分:5)

如果没有匹配,你想继续循环。将语句counter++;放在if语句之外:

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

使用size_t代替counter代替intsize_t counter = 0;

答案 1 :(得分:1)

在增加计数器之前你有return 0

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