输入两个字符串a和b,并动态构造一个新的字符串c。要求是:将a和b对应字符中的较大者存入c对应的位置上,若a和b不一样长,则将较长字符串多出部分的字符全部依序存入c中。

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图

#include<iostream>
#include<string>
#include<cstdlib>
using namespace std;
int main()
{
    char a[100], b[100]; int len = 0;
    cout << "请输入两个字符串:" << endl;
    cin.getline(a, 99);
    cin.getline(b, 99);
    if (strlen(a) > strlen(b))
    {
        len = strlen(a);
        char * c = new char[len];
        int i;
        for (i=0; *(b + i) != '\0'; i++)
        {
            if (*(a + i) > *(b + i))
            {
                *(c + i) = *(a + i);
            }
            else
            {
                *(c + i) = *(b + i);
            }
        }
        int j;
        for ( j = i; *(a + j) != '\0'; j++)
        {
            *(c + j) = *(a + j);
        }
        cout << "新的字符串是:";
        puts(c);
    }
        

    else
    {
        len = strlen(b);
        char * d = new char[len];
        int k;
        for (k = 0; *(a + k) != '\0'; k++)
        {
            if (*(a + k) > *(b + k))
            {
                *(d + k) = *(a + k);
            }
            else
            {
                *(d + k) = *(b + k);
            }
        }
        int h;
        for (h = k; *(b + h) != '\0'; h++)
        {
            *(d + k) = *(b + k);
        }
        cout << "新的字符串是:";
        puts(d);
    }

        
    
    return 0;
}
运行结果及报错内容

img

img

我的解答思路和尝试过的方法
我想要达到的结果

img


#include<iostream>
#include<string>
#include<cstdlib>
using namespace std;
int main()
{
    char a[100], b[100]; int len = 0;
    cout << "请输入两个字符串:" << endl;
    cin.getline(a, 99);
    cin.getline(b, 99);
    if (strlen(a) > strlen(b))
    {
        len = strlen(a);
        char * c = new char[len];
        int i;
        for (i = 0; *(b + i) != '\0'; i++)
        {
            if (*(a + i) > *(b + i))
            {
                *(c + i) = *(a + i);
            }
            else
            {
                *(c + i) = *(b + i);
            }
        }
        int j;
        for (j = i; *(a + j) != '\0'; j++)
        {
            *(c + j) = *(a + j);
        }
        c[j] = '\0';
        cout << "新的字符串是:";
        puts(c);
    }
    else
    {
        len = strlen(b);
        char * c = new char[len];
        int i;
        for (i = 0; *(a + i) != '\0'; i++)
        {
            if (*(b + i) > *(a + i))
            {
                *(c + i) = *(b + i);
            }
            else
            {
                *(c + i) = *(a + i);
            }
        }
        int j;
        for (j = i; *(b + j) != '\0'; j++)
        {
            *(c + j) = *(b + j);
        }
        c[j] = '\0';
        cout << "新的字符串是:";
        puts(c);
    }

    return 0;
}