C++有关字符串比较的bug调试不懂

输入两个字符串,一行一个字符串
最后输出两个字符串大小比较(忽略大小写题目要求)

我的思路:把x,y读入
转化为char*数组(我一开始用char[],后来说这个好像是不可变的)

然后遍历字符,碰到大写字母就转化小写

最后比较
但是报错了,为什么?该怎么改,必采纳!

#include <iostream>
#include <string>

using namespace std;

int main()
{
    string x,y;
    cin>>x>>y;
    char* s1=x,s2=y;
    for (int i = 0;i<x.size();i++){
        if ('A'<=s1[i]&&s1[i]<='Z'){
            s1[i] = (char) s1[i]+32;
        }
    }
    for (int i = 0;i<y.size();i++){
        if ('A'<=s2[i]&&s2[i]<='Z'){
            s2[i] = (char) s2[i]+32;
        }
    }
    if strcmp(s1,s2)>0 cout<<">";
    if strcmp(s1,s2)==0 cout<<"=";
    if strcmp(s1,s2)<0 cout<<"<";
    


    return 0;
}

img


#include <stdio.h>
#include <string.h>
int main()
{
    char x[80],y[80];
    fgets(x,80,stdin);
    fgets(y,80,stdin);
    int r=stricmp(x,y);
    if (r> 0) printf(">");
    if (r==0) printf("=");
    if (r< 0) printf("<");
    return 0;
}