Char*和While Loop不能互相使用

Ins*_*Man 0 c++

这里是将s2与s1进行比较的代码,如果它们相同则返回0和其他一些选项,但是虽然循环不能终止并且我找不到它的问题,但我知道如果我将char*s2转换为const char*s2它会正常工作.

#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;
}
Run Code Online (Sandbox Code Playgroud)

Oli*_*rth 5

你有未定义的行为.您没有分配任何空间来存储字符串(您没有初始化s1s2指向任何内存).

我建议std::string改用; 它管理自己的内存问题.