C语言中怎样才能在指定位置插入字符串
输入两个字符串s1、s2和s1中任意字符k,在s1中的指定字符k第一次出现的位置处插入字符串s2并输出。输入:两个字符串s1、s2和s1中任意字符k输出:插入后的字符串s...
输入两个字符串 s1 、 s2 和 s1 中任意字符 k ,在 s1 中的指定字符 k 第一次出现的位置处插入字符串 s2 并输出。输入: 两个字符串 s1 、 s2 和 s1 中任意字符 k 输出: 插入后的字符串 s1 如输入beijing 123 j输出 bei123jing
展开
2011-10-20
展开全部
#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;
}
#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;
}
展开全部
利用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;
}
#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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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;
}
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;
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询