怎样从一个字符串里面找到特定的单词,然后用别的单词取代?用c语言实现!!!

tohy 2003-06-01 04:28:21
谢谢
...全文
563 10 打赏 收藏 转发到动态 举报
写回复
用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语言有一个函数可以搜索子串,并返回它的位置,然后替换就可以了。
源码下载地址: https://pan.quark.cn/s/eb74eff766f6 在信息技术领域中,小程序作为一类轻量级的应用程序,凭借其无需安装、即开即用的特性,赢得了众多用户和程序设计人员的喜爱。本主题探讨的是一个2021年的最新影视小程序源代码,它是一个无需授权的版本,并且已经过破解,表明开发人员可以不受限制地运用和调整代码,无需顾虑授权方面的顾虑。影视小程序源代码的主要功能一般包含电影、电视剧、真人秀、动画片的分类呈现,视频的播放,以及用户注册、收藏、评论等互动特性。源代码的破解,使其内部机制和构造对外公开,有利于开发人员深入探究和个性化开发。对于初学者来说,这是一个极佳的学习资源,有助于理解小程序的开发流程和常见功能的实现途径。在介绍中说明,这个源代码还配备了详尽的构建指南,这无疑简化了应用过程。即便是对编程知识不太了解的用户,只要依照指南逐步操作,也能够成功地构建自己的影视小程序。指南通常涉及环境设置、项目导入、数据库接入、API接口配置、前端界面设计和后端逻辑编写等环节,是学习小程序开发的关键参考资料。在构建期间,需要留意的是,源代码中可能包含的联系方式可能是付费服务,这部分内容可以安全地忽略。如果在构建时遭遇任何困难,介绍中提到可以随时咨询,提供者将给予指导,这为开发人员提供了良好的支持。对于“小程序源码”这一标识,我们可以理解为与小程序开发相关的源代码,不仅限于影视类别,但在这个案例中,其应用环境明确为影视播放。开发人员可以通过剖析和调整源码,增加新的功能,如付费访问、会员体系、推荐机制等,以满足不同的业务需求。至于“价值500的小程序劝解源码”这个文件名,可能意味着原作者或提供者对源码的估价,也可能是一种市场推广策略。无论价值如何,重要...
已经博主授权,源码转载自 https://pan.quark.cn/s/b9f820ba6b41 3Dmax是一款功能全面的三维设计、动画制作及渲染软件,在游戏开发、影视后期制作和建筑规划等多个行业得到普遍应用。FBX(Filmbox)是一种跨系统的数据传输标准,它使得用户能够在不同的三维设计软件之间共享模型、材质贴图、骨骼动作等数据资源。本篇内容将深入剖析3Dmax输出FBX插件的各项技术要点。3Dmax输出FBX插件作为3Dmax软件的一个附加组件,它能够帮助3Dmax更加便捷、精准地将模型数据传输至其他兼容FBX标准的应用程序,例如Unity、Unreal Engine或Maya等软件平台。该插件提供针对不同操作系统环境的32位与64位两种版本,旨在保障在各种计算机硬件配置下均能稳定运行。1. **FBX标准的优越性**: - **通用性**:FBX标准被众多主流三维设计工具所接纳,有效支持了跨系统的数据共享。 - **数据保真度**:FBX能够完整记录模型的几何构造、材质属性、纹理映射、光照效果、镜头参数以及骨骼动画等详细信息。 - **高效的文件存储**:与其他数据格式相比,FBX能在更小的文件体积中承载丰富的数据信息。2. **输出FBX的操作流程**: - 启动3Dmax程序,加载或构建出需要导出的三维模型。 - 在“文件”功能列表中选取“导出”,然后在出现的选项窗口中指定FBX作为导出格式。 - 在FBX导出配置界面中,用户可以个性化设定导出参数,比如是否包含纹理贴图、动态效果、摄像视角等。 - 确定合适的文件存储位置并命名,点击“导出”按钮完成整个导出过程。3. **FBX插件的功能特性与设置选项**: - **三维形体**:用户可以设定导出多边形网格、...

70,039

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧