我想比较下面给出的两个const char *代码。
void compare(const char *name){
const char *name1;
if(!strcmp(*name,*name1){
printf("true");
}
}
错误是:从'char'无效转换为'const char *' 我需要帮助。
答案 0 :(得分:7)
if(!strcmp(name,name1))
- 您的变量name
和name1
已经成为指针。
但是,仅凭这一点并不会让它神奇地发挥作用。为什么要与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)) {