#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) 这样就可以了
这代码里面有问题,括号不匹配
if(strcmp("tom",(*x).name)==0) 这样就可以了
#2
if(strcmp("tom",(*x).name==0))
改成
if(strcmp("tom",(*x).name)==0)
改成
if(strcmp("tom",(*x).name)==0)
#3
#4
注意左括号与
对应的右括号中间的语句都表示啥,strcmp函数比较的是两个字符串,(*x).name==0 是个表达式,返回的就是bool值,怎么改上面已经回了,搞懂每条语句想实现啥功能
#5
++
另外:
info* head = &c;貌似更合理。
#6
int strcmp(char const*, char const*);
第二个参数是char const*,而表达式 (*x).name == 0 的类型是bool.
#7
+1
#8
楼上的怎么都那样改啊。x是指针,应该x->name吧
#9
x->name 和 (*x).name 完全等价,主要是楼主就是那么写的。
#10
楼主害人不浅
#11
我是新手,不太懂
#1
if(strcmp("tom",(*x).name==0))//就是这里有问题
这代码里面有问题,括号不匹配
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)
改成
if(strcmp("tom",(*x).name)==0)
#3
#4
注意左括号与
对应的右括号中间的语句都表示啥,strcmp函数比较的是两个字符串,(*x).name==0 是个表达式,返回的就是bool值,怎么改上面已经回了,搞懂每条语句想实现啥功能
#5
++
另外:
info* head = &c;貌似更合理。
#6
int strcmp(char const*, char const*);
第二个参数是char const*,而表达式 (*x).name == 0 的类型是bool.
#7
+1
#8
楼上的怎么都那样改啊。x是指针,应该x->name吧
#9
x->name 和 (*x).name 完全等价,主要是楼主就是那么写的。
#10
楼主害人不浅
#11
我是新手,不太懂