在C中比较具有二维数组的数组

时间:2013-04-15 22:51:51

标签: c arrays

我正在尝试将某个字符数组与二维数组进行比较,但我不确定我是如何做到这一点的。说我有以下代码:

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的值来查找它来自哪一行。显然这不起作用。 :/这里有什么想法?

3 个答案:

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