请问为什么这两种情况输出结果不一样

在第十九行处我将 i<=strlen(e)改为i<strlen(e)时会输出时会出现 烫 字样,这是为什么呢?
问题相关代码,请勿粘贴截图
//设计一个字符串类(Mystring),除具有一般的输入输出字符串的功能外,还要求具有计算字符串长度、连接两个字符串等功能,
    //其中求字符串长度和连接字符串功能不能直接调用字符串处理函数。再编写主函数对该类进行测试。
#include<iostream>
using namespace std;
class Mystring
{
private:
    char ch[100];
public:
    Mystring() {};
    void print()
    {
        for (unsigned int i = 0; ch[i] != '\0'; i++)
            cout << ch[i];
        cout << endl;
    }
    void set(char e[])
    {
        for (unsigned int i = 0; i <=strlen(e); i++)
            ch[i] = e[i];
    }
    int getlen(Mystring f)
    {
        int i;
        for (i = 0; f.ch[i] != '\0'; i++);
        return i;
    };
};
void connect(char h[], char j[])
{
    int t = strlen(h);
    for (unsigned int i = t; i <=strlen(j) + t; i++)
        h[i] = j[i - t];
}
int main()
{
    char c[100], d[100];
    cin >> c >> d;
    Mystring A;
    A.set(c);
    A.print();
    cout << A.getlen(A) << endl;
    connect(c, d);
    for (int i = 0; c[i] != '\0'; i++)
        cout << c[i];
    system("pause");
    return 0;
}



运行结果及报错内容

结果:
fbhdsia
cdbwhu
fbhdsia(一堆烫)dbwhu
103
fbhdsiacdbwhu请按任意键继续

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