在字符串的某位置插入另一个字符串 如s1 abcdefg s2 1234 index 3 则为 ab1234cdefg

#include
#include
using namespace std;
void InsertString(char s1[], char s2[], int index);
int main()
{
char s1[20], s2[20];
int index;
cout << "Input s1:";
cin >> s1;
cout << "Input s2:";
cin >> s2;
cout << "Input the index:";
cin >> index;
InsertString(s1, s2, index);
cout << "\nThe new string:" << s1 << endl;
return 0;
}
void InsertString(char s1[],char s2[],int index){
int i,n=0,m=0;
char s3[20];
strcpy(s3,s1);
while(*s1!='\0'){
s1++;
n++;
}
while(*s2!='\0'){
s2++;
m++;
}
for(i=index-1;i<=m;i++){
s1[i]=s2[i];
}
for(i=m+1;i<=n;i++){
s1[i]=s3[i];
}
s1[i]='\0';
}
这段代码的问题


void InsertString(char s1[],char s2[],int index){
    int n=0,m=0;
    char s3[40]={0};
    while(*(s1+n)!='\0'){
        n++;
    }
    while(*(s2+m)!='\0'){
        m++;
    }
    
    strcpy(s3,s1);
    strcpy(s3+index-1,s2);
    strcpy(s3+(index+m-1),s1+index-1);
    strcpy(s1,s3);
    
}

需要判断一下index是否超出s1了。