2

fooArray をループして、各エントリで foo を検索し、適切なエントリで fooCount をインクリメントしようとしています。現状の文字列: HAPY \0 は foo と fooArray[2] の両方に正常に入力されますが、fooArray[2] == foo を取得して true に評価することはできません。

これには string.h と strcmp または strstr を使用する必要がありますか?
fooArray[2] == foo が true に評価されないのはなぜですか?

#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;
}
4

2 に答える 2

3

文字列間の比較は、strcmp 単に比較するのではなく、==

于 2013-02-07T05:19:14.153 に答える
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;
    }
}
于 2013-02-07T05:24:05.397 に答える