#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<math.h>
#include<string.h>
void str(char a[], char b[], int k){
int i, j;
int b_len = strlen(b); //定义b的字符长度 b_len = 3
int a_len = strlen(a); //定义a的字符长度 a_len =9
//下面k-1均为题目要求的指定位置 “移动”“ 插入”均需要这个定值,关键所在
for (i = a_len - 1; i >= k - 1; i--){ //第一步移动
a[i + b_len] = a[i];
}
for (i = k - 1, j = 0; j < b_len; i++, j++){
a[i] = b[j]; //第二步插入
}
}
//本题核心就两步 1.移动 2.插入//
/*1.移动 :顺序从末尾至“指定位置”(建议从尾到指定位置,循环结束条件比较清楚)
移动单位根据字符串b的长度而定。
2.插入 :也就是指定位置放入字数串b的值,这个简单理解为打印单个字符串b,
多了个赋值语句。容易理解单个字符赋值给指定位位置。循环条件就是运用字符串b打印结束的条件
也可以写成b[j]!='\0'等价于 j< b_len
*/
int main()
{
char a[100] = "123456789";
char b[100] = "abc";
str( a,b,7);
printf("%s\n", a);
return 0;
}
运行效果如图