首页 热点资讯 义务教育 高等教育 出国留学 考研考公

C语言 字符串替换replace() 求加每句注释...........谢谢. ....没分了,有分了追加....

发布网友 发布时间:2022-04-22 18:03

我来回答

1个回答

热心网友 时间:2023-11-14 17:22

#include<stdio.h>
#include<string.h>
#include <stdlib.h>
//参数,src 字符串源,sub想要替换的字符串,dst,用来替换的字符串
char*replace(char*src, char*sub, char*dst)
{
//记录当前指针位置
int pos =0;
//记录偏移

int offset =0;
//字符串长度
int srcLen, subLen, dstLen;
//返回内容

char*pRet = NULL;

//求得各字符串长度

srcLen = strlen(src);
subLen = strlen(sub);
dstLen = strlen(dst);
//申请替换后的字符串缓冲区。用dst替换sub,所以应该是srclen-sublen+dstlen,+1流出'\0'位置
pRet = (char*)malloc(srcLen + dstLen - subLen +1);//(外部是否该空间)if (NULL != pRet)
{
//strstr查找sub字符串出现的指针。该指针减去src地址。得到相对位置
pos = strstr(src, sub) - src;
//拷贝src字符串,从首地址开始,pos个字符。
memcpy(pRet, src, pos);
//增加偏移位置到pos
offset += pos;
//拷贝dst到返回内容中。
memcpy(pRet + offset, dst, dstLen);
//重新定位偏移
offset += dstLen;
//拷贝src中,sub字符串后面的字符串到pRet中
memcpy(pRet + offset, src + pos + subLen, srcLen - pos - subLen);
//重新定位偏移
offset += srcLen - pos - subLen;
//最后添加字符串结尾标记'\0'
*(pRet + offset) ='\0';
}
//返回新构造的字符串
return pRet;
}

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com