编写一个程序,将一个字符串s2插入到字符串s1中,其起始插入位置为n。
重点:
计数方式
#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);//如果输入的n比本身的长度大就需要重新输入!可以插入第零位和第最后一位
for (i = 0; i < n; i++)//其起始插入位置为n --> 意味着一直到n的还是原来的数组
{
s3[i] = s1[i];
}
for (j = 0; s2[j] != '\0'; j++)//从s2的第一个开始,下标为零
{
s3[i + j] = s2[j];
}
for (k = n; s1[k] != '\0'; k++)//因为之前是从n开始替代的,从n开始往后接上s1的后半截数组,此时s3下标的计数方式也改变了.
{
s3[j + k] = s1[k];
}
s3[j + k] = '\0';//保证后续不出现乱码,结束
printf("After instert:%s\n", s3);
return 0;
}
代码结果:



自己之前做的时候写的代码,略有不同
#include <stdio.h>
#include <string.h>
int main()
{
char a[100],b[100],c[200];
printf("main string:");
gets(a);
printf("sub string:");
gets(b);
long m = strlen(a),k = strlen(b);
int n;
printf("site of begining:(<=%d)",(int)m);
scanf("%d",&n);
int i;
for( i = 0;i < k + m ;i++ )
{
if(i < n)
{
c[i] = a[i];
}
else if(i < n+k)//这个k一开始被记错了
{
c[i] = b[i-n];
}
else
{
c[i] = a[i-k];
}
}
c[i] ='\0';
printf("After instert:%s\n" ,c);
}
代码结果:
版权声明:本文为weixin_46456339原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。