字符串s2插入到字符串s1中,怎么插入?

#include <stdio.h>
#include <string.h>
#define N 100
int main()
{
    int n, i, j, k, len;
    char s1[N], s2[N], s3[2 * N];
    printf("main string:");
    gets(s1);
    printf("sub string:");
    gets(s2);
    len = strlen(s1);
    do
        {
            printf("site of begining:(<=%d)", len);
            scanf("%d", &n);
        }while (__________);//第17行
       
    for (i = 0; i < n; i++)
       {
           s3[i] = s1[i];
       }
    for (j = 0; s2[j] != '\0'; j++)
      {
           __________________;//第25行
      }
    for (________; s1[k] != '\0'; k++) //第27行
     {
           ________________;//第29行
     }
    s3[j + k] = '\0';
    printf("After instert:%s\n", s3);
    return 0;
}

能给个大致思路吗?完全不知道填。谢谢!

看不懂再问 我写好了注释 有用请采纳哈


#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 100
int main()
{
    int n, i, j, k=0, len;
    char s1[N], s2[N], s3[2 * N];
    printf("main string:");
    gets(s1);
    printf("sub string:");
    gets(s2);
    len = strlen(s1);
    do
    {
        printf("site of begining:(<=%d)", len);
        scanf("%d", &n);
    } while (n>len||n<0);//第17行  意思就是说当用户输入的插入起点超出s1长度或输入为负数时  要求重新输入

    for (i = 0; i < n; i++)
    {
        s3[i] = s1[i];      //这里s3中输入了   s1串的起点到插入位置
    }
    for (j = 0; s2[j] != '\0'; j++)
    {
        s3[i++]=s2[j];//第25行        这里是s1插入位置到s2结束  循环结束后串为s1插入前半段拼接s2
    }
    for (; s1[k] != '\0'; k++) //第27行   这里准备拼接s1后半段
    {
        s3[i++]=s1[n+k];//第29行    循环结束后串s3拼接完毕
    }
    s3[j + k] = '\0';
    printf("After instert:%s\n", s3);
    return 0;
}

img

while (n>len);//17行
s3[i+j]=s2[j];//25for (k=i; s1[k] != '\0'; k++) //27行
s3[j+k]=s1[k];//29

供参考:

#include <stdio.h>
#include <string.h>
#define N 100
int main()
{
    int n, i, j, k, len;
    char s1[N], s2[N], s3[2 * N];
    printf("main string:");
    gets(s1);
    printf("sub string:");
    gets(s2);
    len = strlen(s1);
    do{
         printf("site of begining:(<=%d)", len);
         scanf("%d", &n);
    }while (n > len); //(__________);//第17行

    for (i = 0; i < n; i++)
       {
           s3[i] = s1[i];
       }
    for (j = 0; s2[j] != '\0'; j++)
      {
           s3[i+j] = s2[j]; // __________________;//第25行
      }
    for (k = i; s1[k] != '\0'; k++) //第27行  for (________; s1[k] != '\0'; k++)
     {
           s3[j+k] = s1[k];  //________________;//第29行
     }
    s3[j + k] = '\0';
    printf("After instert:%s\n", s3);
    return 0;
}