C char数组比较

时间:2013-04-13 13:36:30

标签: c

假设我有两个char数组

char names[] = { "Jen" , "Will" , "Smith" } ;
char names2[] = {"Sam" , "Will" , "Dave"};

我想检查两个数组是否在公共索引中都有一个公共元素 例如,名称[]和名称2 []在位置1(基于零)

中都有单词“Will”

我试图用这种方式做到这一点

for(i = 0; i< 3; i++)
{
    if(strcmp(names[i],names2[i]) == 0)
    printf("Same");
}

但是我收到了这个错误“找到字符串的字符串”是什么意思?

2 个答案:

答案 0 :(得分:2)

char []是一个char数组,即一个字符串;你想要的是一个指向字符串文字的指针数组,所以它应该是:

const char * names[] = { "Jen" , "Will" , "Smith" } ;
const char * names2[] = {"Sam" , "Will" , "Dave"};

然后strcmp代码应编译好。

请注意,如果您必须使用用户提供的字符串(而不仅仅是字符串文字),那么您必须使用char * []和动态内存分配,或者使用大型二维char数组(char names [STRNUM][STRMAXLENGHT])。

答案 1 :(得分:1)

通常在c中我们将字符串声明为char name [],如果你正在创建字符串数组意味着你的声明应该是char name [] []