挑战面试编程:字符串替换

                      挑战面试编程:字符串替换

写一个字符串替换函数,如母串"123123123123",把母串中的子串"123",替换为"12345",或者"12"。

思路:

利用库函数strstr(),定位子串。使用strcpy()进行替换。不断重复着定位和替换操作,直到定位到NULL为止。

操作示意图:



开始新一轮的定位……


示例代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/*
字符串替换
把字符串str中的子串s1,替换成s2
*/
char *strReplace(char *str, char *s1, char *s2)
{
	//在堆中申请一片空间
	char *s = malloc(50);
	//清空
	memset(s, 0, 50);
	//把str拷贝到s中
	strcpy(s, str);
	char buf[50];
	char *pStr = strstr(s, s1);
	while (pStr)
	{
		//保存后续内容
		strcpy(buf, pStr+strlen(s1));
		//s2替换s1
		strcpy(pStr, s2);
		//移动pStr
		pStr += strlen(s2);
		//把后序内容补上
		strcpy(pStr, buf);
		//寻找下一次替换的位置
		pStr = strstr(pStr, s1);
	}
	str = s;
	return str;
}
void main()
{
	//"123"->"12345"
	char *str = "123123123123";
	printf("原字符串\n");
	printf("%s\n", str);
	str = strReplace(str, "123", "12345");
	printf("替换后\n");
	printf("%s\n", str);
	free(str);
	system("pause");
}
运行




补充:

对strcpy()的模拟

char *i_strcpy(char *dest, char *src)
{
	if (src == NULL)
		return dest;
	if (dest == NULL)
		return NULL;
	char *p = dest;
	while (*dest++ = *src++);
	dest = p;
	return dest;
}
    


所有内容的目录

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值