为什么会提示“bool”类型的实参与“const char*”类型的形参不兼容

时间:2022-01-14 20:16:47

#include <iostream>
#include <conio.h>
#include <string>
using namespace std;


int main()
{
struct info{
char name[20];
int age;
char sex[7];
info *next;
};
info a={"tom",12,"male",NULL};
info b={"julic",14,"female",&a};
info c={"tony",15,"male",&b};
info *head=&a;
info *x=head;
bool isFind=false;
for( ;x;x=(*x).next) 
{
if(strcmp("tom", (*x).name==0))//就是这里有问题
{
cout<<""<<(*x).age<<endl;
isFind=true;
break;
}
}
if(!isFind)
{
cout<<"没有找到该项"<<endl;
}
getch();
return 0;
}

11 个解决方案

#1


if(strcmp("tom",(*x).name==0))//就是这里有问题

这代码里面有问题,括号不匹配
if(strcmp("tom",(*x).name)==0) 这样就可以了

#2


if(strcmp("tom",(*x).name==0))
改成
if(strcmp("tom",(*x).name)==0)

#3


该回复于2012-11-23 13:00:22被管理员删除

#4


注意左括号与 对应的右括号中间的语句都表示啥,strcmp函数比较的是两个字符串,(*x).name==0 是个表达式,返回的就是bool值,怎么改上面已经回了,搞懂每条语句想实现啥功能

#5


引用 2 楼 anhuizhuanjiao 的回复:
if(strcmp("tom",(*x).name==0))
改成
if(strcmp("tom",(*x).name)==0)

++

另外: 
info* head = &c;
 貌似更合理。

#6



int strcmp(char const*, char const*);


第二个参数是char const*,而表达式 (*x).name == 0 的类型是bool.

#7


引用 6 楼 mujiok2003 的回复:
C/C++ code?



12

int strcmp(char const*, char const*);

第二个参数是char const*,而表达式 (*x).name == 0 的类型是bool.

+1

#8


楼上的怎么都那样改啊。x是指针,应该x->name吧

#9


引用 8 楼 wanglu343280746 的回复:
楼上的怎么都那样改啊。x是指针,应该x->name吧

x->name 和 (*x).name 完全等价,主要是楼主就是那么写的。 为什么会提示“bool”类型的实参与“const char*”类型的形参不兼容

#10


引用 9 楼 mujiok2003 的回复:
引用 8 楼 wanglu343280746 的回复:楼上的怎么都那样改啊。x是指针,应该x->name吧
x->name 和 (*x).name 完全等价,主要是楼主就是那么写的。

楼主害人不浅

#11


引用 10 楼 wanglu343280746 的回复:
引用 9 楼 mujiok2003 的回复:引用 8 楼 wanglu343280746 的回复:楼上的怎么都那样改啊。x是指针,应该x->name吧
x->name 和 (*x).name 完全等价,主要是楼主就是那么写的。
楼主害人不浅

为什么会提示“bool”类型的实参与“const char*”类型的形参不兼容
我是新手,不太懂

#1


if(strcmp("tom",(*x).name==0))//就是这里有问题

这代码里面有问题,括号不匹配
if(strcmp("tom",(*x).name)==0) 这样就可以了

#2


if(strcmp("tom",(*x).name==0))
改成
if(strcmp("tom",(*x).name)==0)

#3


该回复于2012-11-23 13:00:22被管理员删除

#4


注意左括号与 对应的右括号中间的语句都表示啥,strcmp函数比较的是两个字符串,(*x).name==0 是个表达式,返回的就是bool值,怎么改上面已经回了,搞懂每条语句想实现啥功能

#5


引用 2 楼 anhuizhuanjiao 的回复:
if(strcmp("tom",(*x).name==0))
改成
if(strcmp("tom",(*x).name)==0)

++

另外: 
info* head = &c;
 貌似更合理。

#6



int strcmp(char const*, char const*);


第二个参数是char const*,而表达式 (*x).name == 0 的类型是bool.

#7


引用 6 楼 mujiok2003 的回复:
C/C++ code?



12

int strcmp(char const*, char const*);

第二个参数是char const*,而表达式 (*x).name == 0 的类型是bool.

+1

#8


楼上的怎么都那样改啊。x是指针,应该x->name吧

#9


引用 8 楼 wanglu343280746 的回复:
楼上的怎么都那样改啊。x是指针,应该x->name吧

x->name 和 (*x).name 完全等价,主要是楼主就是那么写的。 为什么会提示“bool”类型的实参与“const char*”类型的形参不兼容

#10


引用 9 楼 mujiok2003 的回复:
引用 8 楼 wanglu343280746 的回复:楼上的怎么都那样改啊。x是指针,应该x->name吧
x->name 和 (*x).name 完全等价,主要是楼主就是那么写的。

楼主害人不浅

#11


引用 10 楼 wanglu343280746 的回复:
引用 9 楼 mujiok2003 的回复:引用 8 楼 wanglu343280746 的回复:楼上的怎么都那样改啊。x是指针,应该x->name吧
x->name 和 (*x).name 完全等价,主要是楼主就是那么写的。
楼主害人不浅

为什么会提示“bool”类型的实参与“const char*”类型的形参不兼容
我是新手,不太懂