无意中想到一个个人感觉很好的字符串插入算法,给大家分享一下!

想到一个很好的字符串插入的算法。
要求:在指定位置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);
}

猜你喜欢

转载自blog.csdn.net/weixin_41570025/article/details/89048820
今日推荐