#include<stdio.h>
#include <string.h>
//将s1串中起始位置n,长度l的子串移动到位置m处
char * movetext(char *s1,int n,int l,int m)
{
int len = 0;
int i,j;
for(i=0;s1[i] != 0;i++) //计算字符串s1的长度
len++;
char *p = new char[l];
memcpy(p,s1+n,l); //存储子串
for(i=0;i<len-n-l;i++) //子串后的字符全部前移l个位置
*(s1+n+i) = *(s1+n+l+i);
len -= l; //s1删除子串后的长度
if(m >= len-1) //如果插入位置在s1的尾部,则直接合并即可
{
for(i=0;i<l;i++)
*(s1+len+i) = *(p+i);
}
else //插入位置之后的字符后移l个位置
{
for(i=len-1;i>=m;i--)
*(s1+i+l) = *(s1+i);
for(i=0;i<l;i++)
*(s1+m+i) = *(p+i);
}
delete []p;
return s1;
}
int main()
{
char s1[] = "hello world,I love you!";
char *p = movetext(s1,2,2,3);
printf("%s",p);
return 0;
}