比较C语言中的数组和二维数组



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

char colors[10][4] = {"bla", "bro", "red", "ora", "yel", "gre", "blu", "vio", "gra", "whi"};
char name[11] = "red";

我想看看name[]的值是否与二维数组颜色中的任何"行"相同。如果是,它需要返回哪一行相等。所以在上面的代码中,它将返回一个2,因为红色是二维数组中的第二个值。

这就是我一直在尝试的:

int x, y;
for(x=0; x<10; x++) {
        if (strncmp(colors, name) == 0) {
              break;
    }
}

然后理论上,我可以获取x的值来找到它来自哪一行。显然这行不通。/你有什么想法吗?

我认为你忘记了 [x] :

int x;
for(x=0; x<10; x++) {
        if (strncmp(colors[x], name) == 0) {
              break;
    }
}

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

strncmp(colors,  name)

strncmp(colors[x], name, strlen(name))

我看到一个可能的错误。您没有用您要比较的颜色对位置进行索引。

int x, y;
for(x=0; x<10; x++) {
    if (strncmp(colors[x], name) == 0) {
          printf("Found the color %s", name);
          break;
    }
}

最新更新