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