3 回答
TA贡献883条经验 获得超454个赞
虽然你看到编译器在那三行报错,其实错误还有很多。 我先列出能找到的错误吧:
代码前面你声明了strcmp函数,后面你定义了它,但你在定义时少写了返回类型int。
在strcmp函数体里那三个if语句中,你是打算递归调用strcmp吗? 可是你把参数写成了(const char *a, const char *b)。 调用函数时应该在括号中写传入的实参,你却又把形参声明一遍,这写法不合语法,所以在这里报错。
如前一个回答所说,在这些if语句中 ret == 1; 是判断语句,并不是赋值。 你应该使用单个=来为ret赋值。
strcmp这个函数是做什么用的? 看名字似乎你是想实现C函数库中的比较字符串函数,不过你这样写完全实现不了这个功能。 递归调用的用法错了,你没有设置递归截止条件,所以即便你将递归调用的语法写对,这个strcmp函数会无限递归。 你应该好好整理思路,重写这个函数的逻辑。
C++标准库的头文件不带 .h 结尾,所以一开始应该写成 #include <iostream> 这样。
你代码中并没有用到C++的string头文件,为什么要include它?
在main函数中,你想用str1和str2来作为字符串,但是你却将它们声明成了char类型,这只能表示"单个"字符。 后面你将str1、str2取地址后传入strcmp函数,这样strcmp函数确实接收的是指针类型,所以编译器没有报错,但是完全不合你原本的逻辑。
TA贡献5条经验 获得超0个赞
错误1:ret==1是判断语句,不是赋值语句
错误2:比较字符串应该用string类型的字符串,而不是char
错误3:你自己定义的函数使用了库函数strcmp,这是错误的
TA贡献20条经验 获得超9个赞
ret==1,ret==-1,ret==0是判断语句,返回值是bool类型,并不是赋值语句,而且你的ret在函数中并没有声明,你的代码有点莫名其妙,有点难懂。
- 3 回答
- 0 关注
- 1595 浏览
添加回答
举报