0

我正在尝试将某个字符数组与二维数组进行比较,但我不确定该怎么做。假设我有以下代码:

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 的值来找出它来自哪一行。显然这是行不通的。:/这里有什么想法吗?

4

3 回答 3

5

我想你忘记了[x]

int x;
for(x=0; x<10; x++) {
        if (strncmp(colors[x], name) == 0) {
              break;
    }
}
于 2013-04-15T22:54:40.077 回答
2

您必须索引数组 ( colors[x]) 并且不要忘记 的最后一个参数strncmp,它是要比较的字符串的长度。改变

strncmp(colors,  name)

strncmp(colors[x], name, strlen(name))
于 2013-04-15T22:56:32.460 回答
1

我看到一个可能的错误。您没有以您尝试比较的颜色来索引位置。

int x, y;
for(x=0; x<10; x++) {
    if (strncmp(colors[x], name) == 0) {
          printf("Found the color %s", name);
          break;
    }
}
于 2013-04-15T22:57:52.283 回答