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 關注
- 1701 瀏覽
添加回答
舉報
