社区
C语言
帖子详情
怎样从一个字符串里面找到特定的单词,然后用别的单词取代?用c语言实现!!!
tohy
2003-06-01 04:28:21
谢谢
...全文
584
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语言有一个函数可以搜索子串,并返回它的位置,然后替换就可以了。
(篇九)
C语言
统计某个字母的个数、统计各种字符的个数、统计
单词
的个数
文章目录一、统计某个字母的个数二、统计各种字符的个数三、统计
单词
的个数 本篇文章主要介绍在
C语言
中统计某个字母的个数、统计各种字符的个数和统计
单词
的个数;总之就是计数,-由于
C语言
中没有直接统计的函数,因此需要我们自己编写函数来循环遍历查找需要统计的元素。 一、统计某个字母的个数 1、参考代码: #include <stdio.h> int main() { int i, k=0;...
文本文件
单词
统计(
C语言
)
文本文件
单词
统计(
C语言
) 本人目前还是一位在校大学生,写文章的目的是为了记录一下当前所学,与其他爱好者或从业者相互学习交流。文本文件
单词
统计这个题目是学校的一次课程设计中的一道,在编写时也是参考了很多资料,借鉴了一些别人的想法,如有冒犯我会及时删除。同样,我的编写成果肯定会存在一些不足之处,也请读者多多包涵。 这个题目的具体信息如下: 1、问题描述 编写
一个
文本文件
单词
统计的程序,包括建立文件、
单词
统计、
单词
查询、
单词
定位的功能。 2、基本要求 程序应先询问用户的 ID号(ID 号包括两个大写字母和4 位
C语言
笔记:在
一个
字符串
中寻找另一
字符串
C语言
笔记:在
一个
字符串
中寻找另一
字符串
例题总结 例题 NO.1 读入一行
字符串
(不多于800个字符,以回车结束),统计其中Bubble出现了多少次 输入样例 Bubble if only Bubble. 输出样例 2 思路:利用寻找
字符串
,来判断出现的次数。不同于上一题,如果
找到
这个
单词
之后,需要继续寻找,直到整个句子结束。 #include<stdio.h> int main(){ int i,j,n=0; char a[80]; char b[7]="Bubble\
C语言
函数题-输入多个
单词
,统计以指定字母开头的
单词
个数
6-1 输入多个
单词
,统计以指定字母开头的
单词
个数 (9分) 本题目:先输入
一个
含有多个
单词
的
字符串
,然后再输入
一个
字母,然后调用函数getWordNum统计该行字符中以指定字母开始的
单词
的个数(不区分大小写)。所谓“
单词
”是指连续不含空格的
字符串
,各
单词
之间用空格分隔,空格数可以是多个。 函数接口定义: int getWordNum(char ar1[], char ch) ; 函数返回以形参变量ch中的字符开头的字符数组ar1中的
单词
数 裁判测试程序样例: #include<stdio.h&g
C语言
字符串
练习:提取
单词
与替换
单词
本篇博客介绍了如何使用
C语言
进行
字符串
练习,具体包括统计
单词
数量和替换
单词
的操作。文章详细讲解了
实现
这些功能的步骤和代码示例,帮助读者理解和掌握
字符串
处理的基本方法。
C语言
70,037
社区成员
243,247
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章