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

tohy 2003-06-01 04:28:21
谢谢
...全文
512 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语言有一个函数可以搜索子串,并返回它的位置,然后替换就可以了。
内容概要:本文围绕基于支持向量机的电力短期负荷预测方法展开基于支持向量机的电力短期负荷预测方法研究——最小二乘支持向量机、标准粒子群算法支持向量机与改进粒子群算法支持向量机的对比分析(Matlab代码实现)研究,重点对比分析了三种方法:最小二乘支持向量机(LSSVM)、标准粒子群算法优化的支持向量机(PSO-SVM)以及改进粒子群算法优化的支持向量机(IPSO-SVM)。文章详细介绍了各模型的构建过程与优化机制,并通过Matlab代码实现对电力负荷数据进行预测,评估不同方法在预测精度、收敛速度和稳定性方面的性能差异。研究旨在为电力系统调度提供高精度的短期负荷预测方案,提升电网运行效率与可靠性。; 适合人群:具备一定电力系统基础知识和Matlab编程能力的科研人员、电气工程及相关专业的研究生或高年级本科生;对机器学习在能源领域应用感兴趣的技术人员。; 使用场景及目标:①应用于电力系统短期负荷预测的实际建模与仿真;②比较不同优化算法对支持向量机预测性能的影响;③为相关课题研究提供可复现的代码参考和技术路线支持。; 阅读建议:建议读者结合文中提供的Matlab代码,深入理解每种支持向量机模型的参数设置与优化流程,动手实践以掌握算法细节,并可通过更换数据集进一步验证模型泛化能力。
内容概要:本文主要介绍了一种基于Matlab实现的交叉小波和小波相干性分析方法,旨在帮助科研人员通过具体的代码实践掌握信号处理中的时频分析技术。文中不仅提供了详细的Matlab代码实现流程,还结合实际应用场景展示了该方法在多领域科研交叉小波和小波相干性(Matlab代码实现)问题中的适用性,如电力系统、通信、生物信号处理等。此外,文档还列举了大量相关科研主题和技术方向,涵盖智能优化算法、机器学习、图像处理、路径规划、无人机应用、电力系统管理等多个前沿领域,突显其作为综合性科研辅助资源的价值。; 适合人群:具备一定Matlab编程基础,从事信号处理、电力系统、通信工程、自动化等相关领域的研究生、科研人员及工程技术人员。; 使用场景及目标:①学习和掌握交叉小波与小波相干性的基本原理及其实现方法;②利用Matlab进行时频域联合分析,研究两个非平稳信号之间的局部相关性和相位关系;③将该方法应用于气候变化、神经科学、电力负荷分析等跨学科研究中,提升数据分析的深度与精度; 阅读建议:建议读者结合文中提供的Matlab代码进行实际操作,逐步调试并理解每一步的输出结果,同时参考文档中列出的相关案例和扩展资源,拓展对该技术在不同科研场景下应用的理解。
【源码免费下载链接】:https://renmaiwang.cn/s/qaiji 18、MapReduce的计数器与通过MapReduce读取_写入数据库示例网址: input files to process”表示处理的总输入文件数量,“number of splits”指示文件被分割成多少个块进行处理,“Running job”显示作业的状态等。自定义计数器则是开发者根据实际需求创建的,用于跟踪特定任务的特定指标。开发者可以在Mapper或Reducer类中增加自定义计数器,然后在代码中增加计数器的值。这样,当作业完成后,可以通过查看计数器的值来分析程序的行为和性能。接下来,我们将讨论如何通过MapReduce与数据库交互,尤其是MySQL数据库。在大数据场景下,有时需要将MapReduce处理的结果存储到关系型数据库中,或者从数据库中读取数据进行处理。Hadoop提供了JDBC(Java Database Connectivity)接口,使得MapReduce作业能够与数据库进行连接和操作。要实现MapReduce读取数据库,首先需要在Mapper类中加载数据库驱动并建立连接。然后,可以在map()方法中使用SQL查询获取所需数据。在Reduce阶段,可以对数据进行进一步处理和聚合,最后将结果写入到数据库中。对于写入数据库,通常在Reducer类的reduce()方法或cleanup()方法中进行,将处理后的数据转换为适合数据库存储的格式,然后通过JDBC API执行插入、更新或删除等操作。需要注意的是,由于MapReduce作业可能涉及大量的数据写入,因此需要考虑数据库的并发处理能力和性能优化策略。总结一下,MapReduce的计数器提供了强大的监控和调试能力,而通过MapReduce与数据库的交互则扩展了大数据处理的应用场景。开发者可以根据需求利用计数器来优化作业
内容概要:本文介绍了一个基于异步电机的光伏储能三相并网微电网仿真模型,采用Simulink进基于异步电机的光伏储能三相并网微电网仿真模型(Simulink仿真实现)行建模仿真,重点实现了光伏发电系统、储能单元与异步电机负载在三相电网环境下的并网运行控制策略。模型涵盖了光伏阵列的MPPT控制、储能系统的充放电管理、并网逆变器的控制以及异步电机的动态响应特性,能够模拟微电网在并网模式下的能量流动与系统稳定性。该仿真平台可用于研究微电网的能量调度、电能质量改善及系统动态性能分析。; 适合人群:具备电力电子、电力系统或自动化相关背景,熟悉Simulink仿真工具,有一定建模经验的研究生、科研人员及工程技术人员。; 使用场景及目标:①用于教学与科研中微电网系统的工作原理演示与动态特性分析;②支撑光伏-储能-负载一体化系统的控制策略设计与验证;③为微电网并网运行、能量管理及稳定性研究提供仿真基础。; 阅读建议:建议读者结合电力系统基础知识,逐步理解各模块的设计原理,重点关注MPPT控制与并网逆变器的实现细节,并可通过修改参数进行扩展实验,如加入故障工况或孤岛运行模式,以深化对微电网运行机制的理解。

70,033

社区成员

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

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