社区
C语言
帖子详情
怎样从一个字符串里面找到特定的单词,然后用别的单词取代?用c语言实现!!!
tohy
2003-06-01 04:28:21
谢谢
...全文
574
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语言有一个函数可以搜索子串,并返回它的位置,然后替换就可以了。
放射性核素衰变查询软件decay
代码下载链接: https://pan.quark.cn/s/feb6394ba113 放射性核素衰变查询软件“decay”是一款为核物理学领域设计的专用工具,其功能在于提供全面的放射性核素衰变信息,涵盖了衰变链、分支比等核心数据。该软件特别适合科研人员、工程师以及关注核能或放射性物质的用户群体。在深入探讨这款软件之前,有必要先掌握放射性核素的基础知识。放射性核素定义为不稳定的原子核,由于质子与中子数量失衡,会自发触发核反应,释放能量及/或产生新粒子,此现象即为核衰变。常见的核衰变形式包含α衰变、β衰变(涵盖β+衰变与β-衰变)、γ衰变和电子俘获等。每一种衰变类型都关联着
特定
的能量释放和新生成的核素。“decay”软件的主要作用是进行衰变链的查询。衰变链描述的是
一个
放射性核素通过一连串连续的衰变步骤,最终转变为非放射性核素的现象。比如,铀-238会经由多次α和β衰变,最终转化为铅-206。该软件能够呈现这些衰变链的详尽资料,助力用户追踪并解析这一过程。分支比反映了衰变过程中各个可能途径的概率,即
一个
放射性核素在发生衰变时选择
特定
路径的可能性。分支比对于解析衰变过程中的能量分布和产物生成具有决定性意义,特别是在核能开发、环境检测和医疗领域中不可或缺。这款软件的运行环境设定在Windows XP系统,这表明它可能依赖于较早期的API和库,而这些在现代操作系统上可能存在兼容性问题。对于那些仍在使用或研究老旧系统的人员而言,“decay”是一份极具价值的参考资料。放射性核素的应用遍及多个领域,包括医学上的放射性同位素疗法、地质学中的年代测定、能源产业中的核反应堆构建以及环境科学里的污染物追踪等。“decay”软件所提供的数据能够协助专业人士精确计算和预估放射性物质的特性...
unity2d wsad 移动 碰到物体加命 碰到草莓减命 DEMO 有水印
unity2d wsad 移动 碰到物体加命 碰到草莓减命 DEMO 有水印
2D 大地图 上下左右走 完整游戏 DEMO 带水印 Unity 类FC塞尔达
2D 大地图 上下左右走 完整游戏 DEMO 带水印 Unity 类FC塞尔达
【Python编程】Python描述符协议与属性控制机制
内容概要:本文深入剖析Python描述符(descriptor)的核心协议,重点对比数据描述符与非数据描述符在属性访问优先级上的差异、以及__get__/__set__/__delete__方法的协作机制。文章从属性查找链(__dict__ -> 类 -> 父类 -> __getattr__)出发,详解property装饰器的描述符
实现
原理、类方法(classmethod)与静态方法(staticmethod)的绑定语义、以及自定义描述符在ORM字段类型校验中的应用。通过代码示例展示弱引用(weakref)在描述符中避免循环引用的技巧、描述符的延迟初始化(lazy property)模式、以及验证器描述符的参数范围检查,同时介绍__slots__与描述符的内存优化组合、元类中批量注册描述符的自动化策略,最后给出在框架开发、数据模型、API参数校验等场景下的描述符设计模式与可复用性建议。
Nginx的Web生产服务器配置,基于Nginx的反向代理与安全加固:Windows环境下Django应用HTTPS部署及静态资源托管方案
内容概要:本文档提供了Windows环境下Nginx的详细配置指南,适用于企业内网部署场景。配置文件以Django + Waitress应用架构为基础,全面涵盖反向代理、HTTPS加密、静态文件托管、安全防护等功能。文档对每一项配置均进行了通俗易懂的解释,包括工作进程设置、日志管理、连接处理、SSL证书配置、HTTP/2支持以及多种安全加固措施,如恶意请求拦截(SQL注入、XSS)、敏感文件访问限制、IP白名单机制和关键请求头转发,确保Web服务的安全性与稳定性。; 适合人群:具备基本Web服务器概念,正在Windows平台部署Python Web应用(尤其是Django)的开发人员或运维人员,尤其适合缺乏Nginx实战经验的初级至中级技术人员。; 使用场景及目标:①搭建安全可靠的反向代理服务器,将Nginx作为Django应用的前端网关;②
实现
HTTPS访问、静态资源分离与安全策略强化;③防范常见Web攻击,保护敏感配置文件和接口不被非法访问;④解决因请求头缺失导致的CSRF、登录失效等问题。; 阅读建议:建议结合实际项目逐步配置,并重点关注proxy_set_header各项参数的作用及其与Django的协同设置,务必在测试环境中验证所有安全规则和代理功能后再上线。
C语言
70,037
社区成员
243,247
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章