2013-02-07 52 views
2

我試圖通過fooArray搜索foo的每個條目並在相應條目中增加fooCount。由於它代表字符串:H A P Y \ 0已成功輸入到foo和fooArray [2]中,但我無法將fooArray [2] == foo評估爲true。C - 嘗試在charArray [n] []中查找char []並記錄n的值

我應該爲此使用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; 
} 
+0

一個非常完整在C的字符串概述,請參閱linux終端上的'man string'或這個:http://linux.die.net/man/3/string(以減輕你不得不穀歌的人字符串:) –

回答

3

串之間的比較是通過strcmp不僅僅是==

+0

謝謝, strcmp(fooArray [n],foo)== 0 作品。由於strcmp可以返回等於,大於和小於值,如果它們的字符之和相等,兩個不同的字符串可能會計算爲0? – user2049390

+0

不可能,strcmp()沒有校驗和。我按字符比較字符,並且一旦兩個相應的字符不同,它就不能返回零。 –

1

比較作爲Raghu說,你需要使用的strcmp在你的第一個for循環來完成:

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