#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;
}
while (n>len);//第17行
s3[i+j]=s2[j];//第25行
for (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;
}