下面的代码给出“找不到”输出。但我希望它能给“找到”。我的错误在哪里?
#include <stdio.h>
void compare(char *x, char *face);
int i;
int main(void){
char array[5]="Two";
char *numbers[4]={"One", "Two", "Three", "Four"};
compare(array, *numbers);
}
void compare(char *x, char *y){
for (i = 0; i < 4; i++)
{
if (*x==y[i])
{
printf("\n found");
return;
}
}
printf("\n not found\n");
}
在*x==y[i]
比较两个字符的值而不是两个指针指向的数据时。请改用strcmp函数。如果给定的两个指针指向的两个字符串相等,则返回0。因此将其更改为strcmp(x, y[i]) == 0
另外,您应该将char *y
参数更改为char **y
或,char *y[]
因为y是一个指向字符串的指针数组,而不仅仅是一个指针。
最后,之所以compare(array, *numbers);
称为,是compare(array, numbers);
因为您要传递指向字符串数组的指针,而不仅仅是传递指向一个字符串的指针(numbers
具有类型,char*[4]
但是char**
当作为参数传递时,它将衰减为type )。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句