C语言子字符串插入到主字符串指定位置的问题

#include"stdio.h"main(){inti,j,k,n;charstr1[20],str2[20],str3[40];printf("主字符串:");get... #include "stdio.h"
main()
{
int i,j,k,n;
char str1[20],str2[20],str3[40];
printf("主字符串:");
gets(str1);
printf("子字符串:");
gets(str2);
printf("起始位置:");
scanf("%d",&n);
for(i=0;i<n;i++)
str3[i]=str1[i];
for(j=0;str2[j]!='\0';j++)
str3[i+j]=str2[j];
for(k=n;str1[k]!='\0';k++)
str3[j+k]=str1[k];
str3[j+k]='\0';
printf("\n结果字符串:%s\n",str3);
}
上面的
for(j=0;str2[j]!='\0';j++)
str3[i+j]=str2[j];
for(k=n;str1[k]!='\0';k++)
str3[j+k]=str1[k];
中的str3[j+k]=str1[k];为什么可以是直接j+k而不是i+j+k呢?麻烦高手解答下,万分感谢
展开
 我来答
大空翼HHD
推荐于2017-10-06 · 超过11用户采纳过TA的回答
知道答主
回答量:22
采纳率:0%
帮助的人:18.9万
展开全部
你的程序里有三个for循环,
1、程序执行第一个for后,i 的值为 要插入的位置 n(即 i = n ),此时串str3的长度是 n ;
2、执行第二个for后,j 的值是 串str2的长度,此时串str3的长度是 n + j (也可以是 i + j );
3、第三个for语句的作用是将 以n为起始位置的串str1的字符 拷贝到 str3的起始位置第n + j位置上;
执行第三个for循环前,k 初始值为 n,所以 str3的起始位置是k + j ;

当然了,如果要用i+j+k,可以将第三个for语句改成:
for(k=0; str1[n+k]!='\0';k++)
str3[i+j+k]=str1[i+k];
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式