我想比较数组的第二个元素与字符串,看它们是否匹配。我试图使用memcmp来做到这一点,但它给了我一个错误。这是接近这个的正确方法,还是我完成了?对不起,我是C的新手。
char array[5][32] = {"foo","boo","moo"};
char string[32] = "boo";
int ret;
ret = memcmp(array[1][32], string[32], 4) //4 because i don't want it too match 'book'
if (ret == 0) {
printf("equal");
} else {
printf("not");
}
答案 0 :(得分:0)
如果要比较整个字符串,那么最好使用标准函数strcmp
如果要比较子字符串,则需要使用函数memcmp
。
在你的程序中,显然最好使用函数strcmp
因为你试图比较终止零
比较看起来像
ret = strcmp( array[1], string );
if ( ret == 0) {
printf("equal\n");
} else {
printf("not equal\n");
}
至于你的代码,那么表达式数组[1] [32]是一个单个字符。它不是一个字符串。
如果你想比较二维数组中是否有一个以&#34开头的字符串; boo&#34 ;;那么你确实应该使用函数memcmp
。在这种情况下,正确的代码看起来像
ret = memcmp( array[1], string, strlen( string ) );
if ( ret == 0) {
printf("equal\n");
} else {
printf("not equal\n");
}
答案 1 :(得分:0)
您可以使用' strcmp'以这种方式运作:
if ( strcmp( array[1], string ) == 0 ) {
printf("equal\n");
}
else {
printf("not equal\n");
}
答案 2 :(得分:0)
如果您只想将最多与字符串中的某个长度进行比较,请使用strncmp。
strncmp(array[1], string, 3)
答案 3 :(得分:-1)
您应该从起始地址比较它们。将其更改为
ret = memcmp(&array[1][0], &string[0], 4);
或只是
ret = memcmp(array[1], string, 4);
或更好(如@Darren所建议的),无需给出长度
ret = strcmp(array[1], string);