问:已知三个字符串str1、str2、str3,请编程实现如下功能:找出str1中有几个str2,找出后,用str3替换str2,注:不能用系统库函数,如strcat、strcpy等,但可以自己实现。

本文深入解析了一种字符串替换算法的实现细节,通过使用my_strstr、my_strncpy、my_strcat和my_strcpy等自定义函数,实现了在源字符串中查找特定子串并将其替换为另一个字符串的功能。此算法适用于文本处理、搜索替换等场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

答:

/***function:最终替换生成的字符串保存到result中******/

void sub_str_replace(char *str1, const char *str2, const char *str3, char *result)

{

char * tmp = str1;

//开始查找字符串str2 ,返回第一次出现的位置

const char *cp = NULL;

while((cp = my_strstr(tmp, str2)) != NULL)//每找到一个str2,就用str3来替换

{

    my_strncpy(result, tmp, cp - tmp);

    result[cp - tmp] = '\0';

    my_strcat(result, str3);//把str3所指向的字符串(包括“\0”)复制到result所指向的字符串后面(删除*dest原来末尾的“\0”)。

    my_strcat(result, cp + my_strlen(str2));//把cp中str2后面的字符串放到result后

    my_strcpy(tmp, result);

}  

my_strcpy(result, tmp);  

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值