C语言中怎样才能在指定位置插入字符串

输入两个字符串 s1 、 s2 和 s1 中任意字符 k ,在 s1 中的指定字符 k 第一次出现的位置处插入字符串 s2 并输出。输入: 两个字符串 s1 、 s2 和 s1 中任意字符 k 输出: 插入后的字符串 s1 如输入beijing 123 j输出 bei123jing

#include "stdio.h"
#include<string.h>
int main()
{
int i,j=0,len1,len2,d=0;
char s[200]={0},s1[100],s2[100],k;
printf("Input string s1:");
scanf("%s",s1);
printf("Input string s2:");
scanf("%s",s2);
printf("Input char k:");
getchar();
k=getchar();
len1=strlen(s1);
len2=strlen(s2);
for(i=0;i<len1+d;i++)
{
if(s1[i]==k && d==0)
{
for(j=0;j<len2;j++)
s[i+j]=s2[j];
d=1;
}
else
s[i+j-d]=s1[i-d];
}
s[i+j-d]='\0';
printf("%s\n",s);
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-10-23
利用string的一些函数来实现,算法简单明了,已经讲过验证,你可以直接复制粘贴
#include<iostream>
#include<vector>
#include<algorithm>
#include<string>
using namespace std;

void main(){

string s1="beijing";
int pos=s1.find('j');
string s2="123";
s1.insert(s1.begin()+pos,s2.begin(),s2.end());
cout<<s1<<endl;
}
第2个回答  2011-10-20
#include <stdio.h>

int main(void)
{
char s1[128], s2[128], k, *p;
int lens1 = 0, lens2 = 0, i = 0;

scanf("%s%s", s1, s2);
getchar();
k = getchar();
printf("s1 = %s, s2 = %s, k = %c\n", s1, s2, k);

p = s1;
while (*p++) lens1++;
p = s2;
while (*p++) lens2++;

p = s1;
while (s1[i++] != k) p++;

for (i = lens1 - (p - s1); i > -1; i--)
p[i + lens2] = p[i];
p[lens1 + lens2] = '\0';

for (i = 0; s2[i]; i++)
p[i] = s2[i];

printf("%s\n", s1);
return 0;
}本回答被网友采纳
相似回答