新人求助 大神帮看一下问题在哪?15.16.17行报错
免责声明:本内容仅代表回答会员见解不代表天盟观点,请谨慎对待。
版权声明:作者保留权利,不代表天盟立场。
|
|
|
|
虽然你看到编译器在那三行报错,其实错误还有很多。 我先列出能找到的错误吧:
- 代码前面你声明了strcmp函数,后面你定义了它,但你在定义时少写了返回类型int。
- 在strcmp函数体里那三个if语句中,你是打算递归调用strcmp吗? 可是你把参数写成了(const char *a, const char *b)。 调用函数时应该在括号中写传入的实参,你却又把形参声明一遍,这写法不合语法,所以在这里报错。
- 如前一个回答所说,在这些if语句中 ret == 1; 是判断语句,并不是赋值。 你应该使用单个=来为ret赋值。
- strcmp这个函数是做什么用的? 看名字似乎你是想实现C函数库中的比较字符串函数,不过你这样写完全实现不了这个功能。 递归调用的用法错了,你没有设置递归截止条件,所以即便你将递归调用的语法写对,这个strcmp函数会无限递归。 你应该好好整理思路,重写这个函数的逻辑。
- C++标准库的头文件不带 .h 结尾,所以一开始应该写成 #include 这样。
- 你代码中并没有用到C++的string头文件,为什么要include它?
- 在main函数中,你想用str1和str2来作为字符串,但是你却将它们声明成了char类型,这只能表示"单个"字符。 后面你将str1、str2取地址后传入strcmp函数,这样strcmp函数确实接收的是指针类型,所以编译器没有报错,但是完全不合你原本的逻辑。
|
|
|
|
|
错误1:ret==1是判断语句,不是赋值语句
错误2:比较字符串应该用string类型的字符串,而不是char
错误3:你自己定义的函数使用了库函数strcmp,这是错误的 |
|
|
|
|
ret==1,ret==-1,ret==0是判断语句,返回值是bool类型,并不是赋值语句,而且你的ret在函数中并没有声明,你的代码有点莫名其妙,有点难懂。 |
|
|
|
|