将一个字符串插入到另一个字符串的指定位置。c语言编写
3个回答
展开全部
将指定位置以后的字符分别往后移一个位置,再将要插入的字符串放到指定位置就行了,别忘了最后一个字符要赋为'\0’哦亲~~代码如下,仅供参考~
void insert(char * str,char c,int position)
{
int i;
int len=strlen(str);
for (i=strlen(str)-1;i>=position;i--)
{
str[i+1]=str[i];
}
str[position]=c;
str[len+1]='\0';
}
str就是需要插入的字符串,c是需要插入的字符,position是插入的位置,即字符的下标(从0开始)
嘿嘿,希望对你有用哦~~
void insert(char * str,char c,int position)
{
int i;
int len=strlen(str);
for (i=strlen(str)-1;i>=position;i--)
{
str[i+1]=str[i];
}
str[position]=c;
str[len+1]='\0';
}
str就是需要插入的字符串,c是需要插入的字符,position是插入的位置,即字符的下标(从0开始)
嘿嘿,希望对你有用哦~~
展开全部
已通过测试,望采纳
#include <stdio.h>
#include <string.h>
void main()
{ char str1[30],str2[10];
int n;
char t[30];
int length1,length2,length3;
int i,j=0;
printf("Input the orignal string:");
scanf("%s",str1);
printf("Input the string you want to insert:");
scanf("%s",str2);
length1=strlen(str1);
length2=strlen(str2);
printf("Input the position:");
scanf("%d",&n);
for(i=n;i<length1;i++)
t[j++]=str1[i];
length3=j;
j=n;
for(i=0;i<length2;i++)
str1[j++]=str2[i];
for(i=0;i<length3;i++)
str1[j++]=t[i];
str1[j]='\0';
printf("%s",str1);
}
#include <stdio.h>
#include <string.h>
void main()
{ char str1[30],str2[10];
int n;
char t[30];
int length1,length2,length3;
int i,j=0;
printf("Input the orignal string:");
scanf("%s",str1);
printf("Input the string you want to insert:");
scanf("%s",str2);
length1=strlen(str1);
length2=strlen(str2);
printf("Input the position:");
scanf("%d",&n);
for(i=n;i<length1;i++)
t[j++]=str1[i];
length3=j;
j=n;
for(i=0;i<length2;i++)
str1[j++]=str2[i];
for(i=0;i<length3;i++)
str1[j++]=t[i];
str1[j]='\0';
printf("%s",str1);
}
追问
你能再把下面这部分解释一下吗,我没看懂,谢谢
for(i=n;i<length1;i++)
t[j++]=str1[i];
length3=j;
j=n;
for(i=0;i<length2;i++)
str1[j++]=str2[i];
for(i=0;i<length3;i++)
str1[j++]=t[i];
str1[j]='\0';
printf("%s",str1);
}
追答
哪里不懂再追问
for(i=n;i<length1;i++)保存自插入位置后str1中字符存入t[]中
t[j++]=str1[i];//str1中的内容赋值给t,t代表新串 t[j++]先对t[j]赋值,j再自加,少些点语句
length3=j;//记录自插入位置后str1中字符的个数
j=n;
for(i=0;i<length2;i++)//在str1中n位置起插入str2中全部字符
str1[j++]=str2[i];
for(i=0;i<length3;i++)//将str1中自n起的其余字符(已保存在t[]中)重新赋值给str1
str1[j++]=t[i];
str1[j]='\0'; //给新串str1添加'\0'(原来的已被覆盖掉,因为至少会插入一个字符)
printf("%s",str1);
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <iostream>
using namespace std;
void main()
{
int len1,len2,len4,i,x,k=0;
char a[100],b[100], c[100];
cout<<"请输入一个字符串:"<<endl;
cin>>a;
cout<<"请输入要插入的字符串:"<<endl;
cin>>b;
len1=strlen(a);
len2=strlen(b);
cout<<"请输入你要插入的位置:"<<endl;
cin>>x;
for(i=x-1;a[i]!='\0';i++)
c[k++]=a[i];
len4=x-1;
for(i=0;i<len2;i++)
a[len4++]=b[i];
for(i=0;i<len1-x+1;i++)
a[len4++]=c[i];
a[len4]=0;
cout<<a<<endl;
}
using namespace std;
void main()
{
int len1,len2,len4,i,x,k=0;
char a[100],b[100], c[100];
cout<<"请输入一个字符串:"<<endl;
cin>>a;
cout<<"请输入要插入的字符串:"<<endl;
cin>>b;
len1=strlen(a);
len2=strlen(b);
cout<<"请输入你要插入的位置:"<<endl;
cin>>x;
for(i=x-1;a[i]!='\0';i++)
c[k++]=a[i];
len4=x-1;
for(i=0;i<len2;i++)
a[len4++]=b[i];
for(i=0;i<len1-x+1;i++)
a[len4++]=c[i];
a[len4]=0;
cout<<a<<endl;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询