社区
C语言
帖子详情
怎样从一个字符串里面找到特定的单词,然后用别的单词取代?用c语言实现!!!
tohy
2003-06-01 04:28:21
谢谢
...全文
544
10
打赏
收藏
怎样从一个字符串里面找到特定的单词,然后用别的单词取代?用c语言实现!!!
谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
windbells
2003-06-02
打赏
举报
回复
给你个建议
1、比较查找字符串和替换字符串的长度,如果替换字符串的长度小于查找字符串的话
执行第一便扫描,匹配算法可以采用改进后的Boyer-Moore-Horspool算法,要比strstr()函数快上5~7倍,找到后直接替换,多出的长度部分用特殊字符填充,替换完成后,如果前一步有发现则执行最后一边扫描,用指针交替移动的方法,遇到特殊字符,把后面的向前填充.
2、如果相等的话,少了前一步的最后扫描工作。
3、如果长度比要查找的大,第一遍扫描记下找到的个数,位置,然后计算出替换后字符串的总长,然后申请需要的空间,根据找到的位置构造新的字符串。原有的字符串空间释放。
(参数传递可以采用引用指针方式,返回时直接替换掉源字符串指针值,防止访问源字符串指针报错)
arfi
2003-06-02
打赏
举报
回复
#include <stdio.h>
#include <string.h>
void back(char *str, int len)
{
char *p = str;
while(*p++);
for(;p>=str;p--)
*(p+len) = *p;
}
char *replace(char *sour, char *findstr, char *replstr)
{
char *p;
int flen, rlen;
flen = strlen(findstr);
rlen = strlen(replstr);
while(1)
{
p = strstr(sour, findstr);
if(p == NULL)
break;
if(flen > rlen)
{
strcpy(p, replstr);
p += rlen;
strcpy(p, p+(flen-rlen));
}
else if(flen < rlen)
{
back(p+flen, rlen-flen);
memcpy(p, replstr, rlen);
p += rlen;
}
else
{
memcpy(p, replstr, rlen);
p += rlen;
}
}
return sour;
}
void main(void)
{
char sour[80] = "hello world, who are you?";
replace(sour, "world", "earth");
printf("%s\n", sour);
}
tohy
2003-06-02
打赏
举报
回复
关注!
witcheese
2003-06-02
打赏
举报
回复
1
wahao
2003-06-01
打赏
举报
回复
我为了它忙了一个星期了
可是……
我好伤心
tohy
2003-06-01
打赏
举报
回复
好象不行也!!
TripleX
2003-06-01
打赏
举报
回复
用正则表达式库吧 可以着很多意想不到的字符串处理 :)
hillyee
2003-06-01
打赏
举报
回复
关注
windbells
2003-06-01
打赏
举报
回复
source为源字符串,findstr为需要查找被替换的字符,replacestr为替换字符
char *replace(char *source,char *findstr,char *replacestr)
{
char *p=strstr(source,findstr);
int len;
int flen;
int rlen;
if(p)
{
int pos=p-source;
flen=strlen(findstr);
rlen=strlen(replacestr);
if(flen>=rlen)
{
memcpy(&source[pos],replacestr,rlen);
if(flen>rlen)
{
strcpy(&source[pos+rlen],&source[pos+flen]);
}
return source;
}
else
{
int len = strlen(source);
char *szStr = new char[len+rlen-flen+1];
memset(szStr,0,len+rlen-flen+1);
memcpy(szStr,source,pos);
memcpy(&szStr[pos],replacestr,rlen);
strcat(szStr,p+flen);
delete []source;
return szStr;
}
}
return NULL;
}
zalyer
2003-06-01
打赏
举报
回复
c语言有一个函数可以搜索子串,并返回它的位置,然后替换就可以了。
(31页PPT)公司股权架构设计.pptx
(31页PPT)公司股权架构设计.pptx
【机器人技术】基于双激光雷达与红外导航的室内服务机器人系统:多传感器融合SLAM与自动充电方案设计
内容概要:本文围绕室内服务机器人导航系统展开研究,提出了一种基于双激光雷达的导航方案,通过在机器人前部和后部搭载激光雷达,融合双激光雷达与里程计数据,采用基于图优化的Cartographer算法构建环境二维栅格地图,并结合A\*算法和DWA算法
实现
路径规划,提升了建图效率与实时避障能力。同时,设计了一套自动充电系统,提出基于红外导航的充电桩对接算法,结合远程导航与近程对接,
实现
机器人自动充电,并通过位姿矫正提高对接精度。通过多项实验验证了系统在地图构建、导航精度、避障能力和自动充电方面的有效性。; 适合人群:具备一定机器人、自动化或电子信息工程背景,从事智能机器人系统开发、导航算法研究或嵌入式系统设计的研究生及工程技术人员。; 使用场景及目标:①提升服务机器人在复杂室内环境中的自主导航与建图效率;②增强动态障碍物避障能力;③
实现
无需人工干预的自动充电功能,适用于商场、医院、家庭等服务机器人应用场景。; 阅读建议:本文理论与实践结合紧密,建议读者结合ROS系统与SLAM、路径规划算法基础进行深入研读,并参考其实验设计与软硬件架构,用于自主开发或优化服务机器人导航系统。
上机实验-实验四 通过网络配置交换机.pkt
【上机实验】实验四-通过网络配置交换机,实验文件为.pkt格式。计算机网络实验工具软件【桌面名称】:Cisco Packet Tracer Student是计算机网络上机实验的专用仿真工具,其核心价值是以极低的成本、极高的便捷性,
实现
真实网络环境和设备的仿真,让学生无需接触物理硬件,即可掌握网络拓扑搭建、设备配置、协议调试、排错验证等核心实操能力,是连接计算机网络理论知识与实际操作的核心桥梁,也是国内高校网络课程上机实验的标配工具。
和部署视频ssm359大学餐厅菜品推荐和点评系统+vue.zip
绝不打广告求通过!有冒犯平台规则处请消息告知,我会积极整改!这是我唯一的活路了!求审核人员不要封我号!我绝不违法乱纪! 有问题请及时告知我!十分感谢! 本人亲自运行,所有项目都有运行视频,有问题看我主页!
和部署视频ssm327校园二手交易平台的设计与
实现
+vue.zip
绝不打广告求通过!有冒犯平台规则处请消息告知,我会积极整改!这是我唯一的活路了!求审核人员不要封我号!我绝不违法乱纪! 有问题请及时告知我!十分感谢! 本人亲自运行,所有项目都有运行视频,有问题看我主页!
C语言
70,040
社区成员
243,246
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章