1

假设我有两个 char 数组

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

并且我想检查两个数组是否在公共索引中具有公共元素,例如 names[] 和 names2[] 在位置 1 中都有单词“Will”(从零开始)

我正在尝试用这种方式

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

但我收到此错误“在预期字符串的位置找到字符”有什么想法吗?

4

2 回答 2

2

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

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

那么strcmp代码应该编译得很好。

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

于 2013-04-13T13:39:50.937 回答
1

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

于 2013-04-13T13:40:17.303 回答