-1

我正在尝试比较下面给出的两个 const char* 代码。

void compare(const char *name){
             const char *name1;

             if(!strcmp(*name,*name1){
                  printf("true");
             }
}

错误是:从 'char' 到 'const char *' 的无效转换我需要帮助。

4

3 回答 3

7
if(!strcmp(name,name1))

-- 你的变量namename1已经是指针。

然而,仅凭这一点并不能神奇地让它发挥作用。为什么要与未初始化的值进行比较name1

于 2013-07-21T01:02:40.663 回答
5

您已经在使用指针,因为 char * 字面意思是“char 指针”。你只需要去掉*。但请注意 strcmp 比较的是字符串,而不是字符或指针。我不知道您要做什么,但是如果您想比较它们是否是同一个对象,请执行以下操作:

if (name1 == name2) ...

但是,如果您要比较它们的内容,则需要取消引用它们:

if (*name1 == *name2) ...

如果它们是字符串,则只需使用:

if (strcmp(name1, name2) == 0) ...

希望这可以帮助

于 2013-07-21T01:28:57.867 回答
1

strcmp 的参数应该是指向 char 的指针,而不是 chars,所以不要尊重你已经拥有的指针:

  if (!strcmp(name,name1)) { 
于 2013-07-21T01:03:24.160 回答