C - 尝试在charArray [n] []中查找char []并记录n的值

时间:2013-02-07 05:08:32

标签: c arrays string compare multidimensional-array

我试图遍历fooArray搜索foo的每个条目,并在相应的条目中增加fooCount。因为它代表字符串:H A P Y \ 0成功输入foo和fooArray [2],但我不能得到fooArray [2] == foo来评估为真。

我应该使用string.h和strcmp或strstr吗?
为什么fooArray [2] == foo评估为真?

#include <stdio.h>
#include <stdlib.h>

int main(void){

    char foo[5] = "HAPY";
    static char fooArray[4][5] = {"abc", "123", "HAPY", "some"};
    int fooCount[4] = {0};
    int n;

    printf("size of fooArray: %d\n", ( sizeof(fooArray) / sizeof(fooArray[0])));

    for (n = 0; n < sizeof(fooArray) / sizeof(fooArray[0]); n++) {
        if (fooArray[n] == foo) {
            fooCount[n]++;
            break;
        }
    }

    for (n = 0; n < sizeof(fooArray) / sizeof(fooArray[0]); n++) 
        printf(" fooArray[%d] = %s \n", n, fooArray[n]);

    for (n = 0; n < sizeof(fooCount) / sizeof(fooCount[0]); n++) 
        printf(" fooCount[%d] = %d \n", n, fooCount[n]);

    system("pause");
    return 0;
}

2 个答案:

答案 0 :(得分:3)

字符串之间的比较由strcmp完成,而不仅仅是==

答案 1 :(得分:1)

正如Raghu所说,你需要在你的第一个for循环中使用strcmp:

for (n = 0; n < sizeof(fooArray) / sizeof(fooArray[0]); n++) {
    if (!strcmp(fooArray[n], foo)) { /* if equal then strcmp() will return zero */
        fooCount[n]++;
        break;
    }
}