输入 第一行和第二行分别输入两个字符串s1
和s2
,第三行输入插入位置f
每个字符串的长度不超过100
个字符。
输出 输出一行插入后的字符串。
测试说明
样例输入:
BEIJING
123
3
样例输出:
BEI123JING
注意:使用**gets()**函数会引起警告并不是报错,只要代码编译正确并不会影响测评结果。 推荐使用:fgets()函数。
scanf语句不能加换行符,scanf(“%s\n”,a1)(不行)自己可以搜索一下了解一下原因。scanf函数有关
代码如下:
#include<string.h>
int main()
{
char a1[100], a2[100], a3[200];
int f = 0;
int i = 0;
int j = 0;
int sz = 0;
//输入两个字符串和f的值
scanf("%s", a1);
scanf("%s", a2);
scanf("%d", &f);
//f插入a1的字符串中,考虑字符串的长度,f<0&&f>字符串长度是不是不合法
sz = strlen(a1);//strlen计算数组元素个数,不包括\0
//a b c d
if (f<0 || f>sz)//f可以等于0,那就是插入这个字符串前面
{
printf("插入f不合法");
}
//输入f之后,假设a1为如下
//a b c d e f=3 插入的数放在c后面
//0 1 2 3 4 下标
for (i = 0; i < f; i++)
{
a3[i] = a1[i];//a1下标f前面的值赋值给a3,
}
//此时a3得到了a b c
//此时把a2的值放在a3此时后面
//此时i=3;
//a2
//1 2 3 '\0'
//0 1 2 (下标)
for (j = 0; a2[j] != '\0'; j++)
{
a3[i + j] = a2[j];//a2数组元素放在a3后面
}
//将a1数组中元素是f后的给a3数组
for (i = f; a1[i] != '\0'; i++)
{
a3[i + j] = a1[i];
}
a3[i + j] = '\0';//a3数组的结束标志
printf("%s", a3);
return 0;
}
调试结果如下: