我正在尝试将某个字符数组与二维数组进行比较,但我不确定我是如何做到这一点的。说我有以下代码:
char colors[10][4] = {"bla", "bro", "red", "ora", "yel", "gre", "blu", "vio", "gra", "whi"};
char name[11] = "red";
我想看看name []的值是否与二维数组颜色中的任何“行”相同。如果是这样,它需要返回哪一行相等。所以在上面的代码中,它将返回2,因为red是二维数组中的第二个值。
这就是我一直在尝试的:
int x, y;
for(x=0; x<10; x++) {
if (strncmp(colors, name) == 0) {
break;
}
}
然后从理论上讲,我可以获取x的值来查找它来自哪一行。显然这不起作用。 :/这里有什么想法?
答案 0 :(得分:5)
我想你忘记了 [x] :
int x;
for(x=0; x<10; x++) {
if (strncmp(colors[x], name) == 0) {
break;
}
}
答案 1 :(得分:1)
你必须索引数组,(colors[x]
)并且不要忘记strncmp
的最后一个参数,这是要比较的字符串的长度。变化
strncmp(colors, name)
到
strncmp(colors[x], name, strlen(name))
答案 2 :(得分:1)
我看到一个可能的错误。您没有使用要比较的颜色索引位置。
int x, y;
for(x=0; x<10; x++) {
if (strncmp(colors[x], name) == 0) {
printf("Found the color %s", name);
break;
}
}