比较两个字符指针

时间:2013-07-21 00:59:37

标签: c

我想比较下面给出的两个const char *代码。

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

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

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

3 个答案:

答案 0 :(得分:7)

if(!strcmp(name,name1))

- 您的变量namename1已经成为指针。

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

答案 1 :(得分:5)

您已经在使用指针,因为char *实际上是“char指针”。你只需要取出*。但请注意,strcmp会比较 字符串 ,而不是字符或指针。我不知道你想要做什么,但如果你想比较它们是否是同一个对象,那就去做:

if (name1 == name2) ...

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

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

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

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

希望这有帮助

答案 2 :(得分:1)

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

  if (!strcmp(name,name1)) {