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

tohy 2003-06-01 04:28:21
谢谢
...全文
551 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语言有一个函数可以搜索子串,并返回它的位置,然后替换就可以了。
内容概要:本文围绕Koopman算子理论展开,探讨其作为非线性动力学系统线性嵌入工具的核心思想与实现方法,结合深度学习技术构建通用的非线性系统建模框架。文中详细阐述了Koopman算子的基本原理及其在高维观测空间中将非线性动态转化为线性演化过程的能力,并通过Python和Matlab代码实例演示如何利用神经网络学习Koopman模态分解、动态模式预测及可观测函数的构造,从而实现对复杂非线性系统的有效建模与长期预测。研究强调方法的通用性与可扩展性,适用于多类科学与工程问题中的动力学建模任务。; 适合人群:具备一定数学基础(如线性代数、微分方程)和编程能力(熟悉Python/Matlab),从事系统建模、控制理论、物理信息建模或数据驱动科学研究的研究生、科研人员及工程师。; 使用场景及目标:① 掌握Koopman算子在非线性系统分析中的理论基础与数值实现路径;② 学习如何结合深度学习构建可解释性强的动力学模型,应用于流体力学、机器人控制、气候建模等领域;③ 借助提供的代码资源快速复现并拓展至具体科研项目中。; 阅读建议:建议读者结合理论推导与代码实践同步学习,重点关注Koopman观测函数的设计、神经网络架构选择与训练策略,并尝试将其应用于实际非线性系统数据以加深理解。
内容概要:本报告基于毕马威第25届全球汽车高管中国调研,深入分析了中国汽车行业在未来十年实现突破所需的五大战略要务,提出“五T”领导力框架——引领转型、掌握技术、赢取信任、应对摩擦、携手共进。报告指出,中国高管普遍认为可持续发展、供应链转型、人工智能应用和战略联盟是关键驱动力,尤其在技术投入、供应链优化和研发合作方面显著领先。此外,报告强调区域化布局、数字化转型、客户洞察升级及生态合作将成为企业构建竞争优势的核心路径。; 适合人群:汽车行业企业管理者、战略决策者、政策制定者及关注汽车产业变革的研究机构与投资者。; 使用场景及目标:①帮助企业识别未来三年内的核心颠覆因素并制定应对策略;②指导企业在人工智能、电动化、供应链韧性等领域进行战略性投资;③推动跨行业合作以加速电动汽车普及与商业模式创新;④为高管提供全球视野下的中国差异化洞察与行动蓝图。; 阅读建议:建议结合全球与中国的对比数据进行深度解读,重点关注“五T”框架在实际战略规划中的落地应用,并参考毕马威在数字化、可持续发展、税务贸易及金融等领域的专业服务建议,以全面提升企业韧性与竞争力。
专业眼底血管分割数据集 本数据集包含600张高质量彩色眼底图像,涵盖多种常见眼底疾病(如糖尿病视网膜病变、高血压视网膜病变、青光眼等)及正常视网膜血管形态。所有图像均经由眼底病专科医生进行像素级精细标注,确保视网膜血管网络分割的完整性与连续性,符合临床血管形态学分析的精度要求。 数据集已完成标准化预处理流程,包括图像尺寸统一、对比度增强、光照不均校正,并严格按8:2比例划分为训练集与验证集。所有数据以PNG无损格式存储,配套的二值标注掩膜明确区分以下两类分割目标: • 0: 背景 • 255: 血管 本数据集专为先进的视网膜血管分割模型(如U-Net、CS-Net、DRIU)优化,可用于训练高精度、高泛化性的血管网络自动提取系统,为血管直径测量、分支分析、动静脉分类及疾病相关血管变化(如微动脉瘤、新生血管)检测提供关键基础。 随附的专业分析工具,支持一键生成血管密度统计、血管骨架提取、分支点检测、以及分割性能的敏感性/特异性分析图表,为研究者提供全面的血管形态学量化与模型评估能力。 该数据集具有标注专业、图像清晰、病理覆盖全面的特点,是开展眼科影像AI、心血管风险眼部生物标志物研究、以及视网膜疾病计算机辅助诊断的理想基准数据。基于本数据集训练的模型,可为自动化、定量化的眼底血管分析提供可靠支持。 在人工智能与精准眼健康管理深度融合的当下,高质量、精细标注的眼底血管数据是推动相关筛查与诊断工具临床转化的重要基石。我们提供这套经专科医师严格标注的眼底血管分割数据集,致力于助力临床与科研工作者开发可靠、高效的智能眼底分析系统。

70,037

社区成员

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

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