這裏是比較s2和s1的代碼,如果它們相同,它返回0和其他一些選項,但while循環不能結束,我找不到它的問題,我知道如果我將char * s2轉換爲const char * s2,它會正常工作。char *和while循環不能與eachother
#include <iostream>
using namespace std;
int cmp(char*,char*);
int main()
{
char* s1;
cout << "Please Enter First Word: "; cin >> s1;
char* s2;
cout << "Please Enter Second Word: "; cin >> s2;
cout << "The Result is: " << cmp(s1,s2) << endl;
return 0;
}
int cmp(char* s1, char* s2)
{
int i=0;
while (*(s2+i)!=0)
{
if (*(s2+i)>*(s1+i)) return 1;
if (*(s2+i)<*(s1+i)) return -1;
i++;
}
return 0;
}
爲什麼不使用'strcmp'這是標準的,相當於你的'cmp'?而'std :: string'也有'compare'... – 2012-03-15 18:17:03
你在使用's1'和's2'之前將它們初始化爲一個合理的值。 – 2012-03-15 18:18:40
這可能是我在SO和C++代碼中看到的最常見的錯誤。不幸的是,如果你不知道問題是什麼,很難搜索。 – 2012-03-15 18:18:54