s2とs1を比較するコードは同じですが、0とその他のオプションを返しますが、whileループは終了できません。問題は見つかりません私がchar * s2をconst char * s2に変換すると、うまく動作します。Char *とWhileループは互いに作用しません
#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;
}
標準で、あなたの 'cmp'に相当する' strcmp'を使わないのはなぜですか?そして 'std :: string'も' compare'を持っています... –
あなたは感知可能な値に初期化する前に 's1'と' s2'を使います。 –
これはおそらく私がCとC++コードで見ている最も一般的な間違いです。残念ながら、問題の内容がわからない場合は、検索するのは難しいです。 –