2013-07-21 48 views
0

我想比较两个const char *代码如下。两个字符指针的比较

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

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

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

回答

7
if(!strcmp(name,name1)) 

- 你的变量namename1已经是三分球。

但是,单凭这一点不会神奇地使它工作。为什么要比较name1的未初始化值?

+1

添加第二个“) '在strcmp之后。计算括号! – usr2564301

+0

非常感谢你name1是一个const char *的结构:-)再次感谢你。 –

+0

你说name和name1已经是指针了,这可能意味着*给出了一个指向变量的指针,而不是。 &给出地址。在这方面,Joni的答案可能更清楚。 – Joe

1

到strcmp应该是指向char,没有字符,所以不尊重指针的参数,你已经有了:

if (!strcmp(name,name1)) { 
5

你已经在使用指针,因为字符*是字面意思是“字符指针”。你只需要把*出来。但请注意,strcmp比较字符串,而不是字符或指针。我不知道你正在尝试做的,但如果你正在寻找比较,如果它们是同一个对象,只是做:

if (name1 == name2) ... 

但是,如果你是比较它们的内容,你需要他们提领:

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

如果他们是字符串,然后只需使用:

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

希望这有助于