从键盘上先后读入两个字符串,假定存储在字符数组s1和s2中。注意,这两个字符串最长均可达到26个字符、最短均可为0个字符。将字符串s2插入字符串s1中,生成一个新的字符串s。插入方法为s2的第i个字符插入到原s1的第i个字符后,如果s2比s1(假定s1的长度为l1)长,则s2的第l1个字符开始到s2结尾的所有字符按在s2中的顺序放在新生成的字符串s之后。用指针完成程序。
时间: 2023-04-30 13:00:33 浏览: 40
#include <stdio.h>
#include <string.h>
int main()
{
char s1[27], s2[27], s[54]; // 定义三个字符数组,s1和s2最长为26,s最长为52
int l1, l2, i, j;
char *p1, *p2, *p;
printf("请输入字符串s1:");
scanf("%s", s1);
printf("请输入字符串s2:");
scanf("%s", s2);
l1 = strlen(s1);
l2 = strlen(s2);
p1 = s1;
p2 = s2;
p = s;
for (i = 0; i < l1; i++) // 将s1复制到s中
{
*p = *p1;
p++;
p1++;
}
for (i = 0; i < l2; i++) // 将s2插入到s中
{
for (j = l1 + i; j > i; j--)
{
*(p + j) = *(p + j - 1);
}
*(p + i) = *(p2 + i);
}
if (l2 > l1) // 如果s2比s1长,将s2剩余的字符复制到s中
{
for (i = l1; i < l2; i++)
{
*(p + l1 + i) = *(p2 + i);
}
}
printf("生成的新字符串s为:%s\n", s);
return 0;
}