我试图遍历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;
}
答案 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;
}
}