想到一个很好的字符串插入的算法。
要求:在指定位置pos插入子串,并不覆盖原字符串,原字符串足够大。
我利用的是将子串与主串指定位置数据交换,然后再把子串复制到尾部。
#include<stdio.h>
void insert(char *s,char *t,int pos)
{
char tmp;
char *tbf=t;//备份插入字符串首地址
while(*t!='\0')//插入子串与主串指定位置替换
{
tmp=*t;
*t=*(s+pos);
*(s+pos)=tmp;
pos++;
t++;
}
t=tbf;//指针返回子串首地址
while(*t!='\0')//再把插入子串复制给主串尾部
{
*(s+pos)=*t;
t++;
pos++;
}
}
main()
{
char a[50]="abcdefg";
char b[]="INSERTSTR";
insert(a,b,3);
printf("%s\n",a);
}