C语言问题 字符(串)替换

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言问题 字符(串)替换相关的知识,希望对你有一定的参考价值。

背景:
字符串的替换功能是目前各种编辑软件中必备的功能之一。下面我们也来实现一下这个替换功能。
输入:
输入3行:第1行为源串 s(长度<=100);第2行位被替换串 t(长度<=10);第3行为替换串 str(长度<=10)
输出:
替换后的字符串(长度<=100)。
我的程序:
#include<stdio.h>
#include<string.h>
int main()

char src[250], pattern[250], replace[250], dst[250];
int i, j, k, l;
int pattern_len, match_len;
gets( src );
gets( pattern );
gets( replace );
pattern_len = strlen( pattern );
strcpy( dst, src );
for ( i = 0; src[i]; i++ )

for ( j = 0, k = i, match_len = 0; pattern[j]; j++, k++ )
if ( pattern[j] == src[k] ) match_len++;
if ( match_len == pattern_len )

for ( k = 0; k < i; k++ )
dst[k] = src[k];
for ( l = 0; replace[l]; k++, l++ )
dst[k] = replace[l];
for ( l = i + match_len; src[l]; k++, l++ )
dst[k] = src[l];
dst[k] = '\0';
break;


puts( dst );
return 0;

有四个保密测试不通过,求大神改错

主要是for循环有问题,修改后的代码:
#include <stdio.h>

#include <string.h>

int main()



char src[250], pattern[250], replace[250], dst[250];

int i, j, k, l, m=0;

int pattern_len, match_len;

gets( src );

gets( pattern );

gets( replace );

pattern_len = strlen( pattern );

// strcpy( dst, src );

for ( i = 0; src[i]; i++ )



for ( j = 0, k = i, match_len = 0; pattern[j]; j++, k++ )



if ( pattern[j] == src[k] )



match_len++;



else



match_len=0;

break;





if ( match_len == pattern_len )



// for ( k = 0; k < i; k++ )

// dst[k] = src[k];

for ( l = 0; replace[l]; m++, l++ )

dst[m] = replace[l];

// for ( l = i + match_len; src[l]; k++, l++ )

// dst[k] = src[l];

// dst[k] = '\0';

// break;

i+=match_len-1;



else



dst[m] = src[i];

m++;





dst[m]='\0';

puts( dst );

return 0;

参考技术A 提问的艺术
在网络世界里,当提出一个技术问题时,你能得到怎样的回答?这取决于挖出答案的难度, 同样取决于你提问的方法。本指南旨在帮助你提高发问技巧,以获取你最想要的答案……
不想掩饰对这样一些人的蔑视--他们不愿思考,或者在发问前不去完成他们应该做的事。这种人只会谋杀时间--他们只愿索取,从不付出,无端消耗我们的时间,而我们本可以把时间用在更有趣的问题或者更值得回答的人身上。我们称这样的人为“失败者”(由于历史原因,我们有时把它拼作“lusers”)。
提问之前(Before You Ask)
在通过电邮、新闻组或者聊天室提出技术问题前,检查你有没有做到: 1. 通读手册,试着自己找答案。
2. 在FAQ里找答案(一份维护得好的FAQ可以包罗万象:)。 3. 在网上搜索(个人推荐google~~~)。 4. 向你身边精于此道的朋友打听。
当你提出问题的时候,首先要说明在此之前你干了些什么;这将有助于树立你的形象:你不是一个妄图不劳而获的乞讨者,不愿浪费别人的时间。如果提问者能从答案中学到东西,我们更乐于回答他的问题。
周全的思考,准备好你的问题,草率的发问只能得到草率的回答,或者根本得不到任何答案。越表现出在寻求帮助前为解决问题付出的努力,你越能得到实质性的帮助。
小心别问错了问题。
另一方面,表明你愿意在找答案的过程中做点什么,是一个非常好的开端。“谁能给点提示?”、“我这个例子里缺了什么?”以及“我应该检查什么地方?”比“请把确切的过程贴出来”更容易得到答复。因为你显得只要有人指点正确的方向,你就有完成它的能力和决心。
怎样提问 (When You Ask)
谨慎选择论坛
小心选择提问的场合。如果象下面描述的那样,你很可能被忽略掉或者被看作失败者: 1. 在风马牛不相及的论坛贴出你的问题
2. 在探讨高级技巧的论坛张贴非常初级的问题;反之亦然 3. 在太多的不同新闻组交叉张贴
参考技术B 您会写程序,那最好自己写喔:)
给个提示您输入文件为:
aba
ba
aaba
替换后会变成什么?追问

aaaba啊

追答

那:
aaba
aba
ba
呢?

C的string.h里有没有字符串替换函数

参考技术A 1.函数名: stpcpy
功 能: 拷贝一个字符串到另一个
2.函数名: strcat
功 能: 字符串拼接函数

3.函数名: strchr
功 能: 在一个串中查找给定字符的第一个匹配之处\

4.函数名: strcmp
功 能: 串比较

5.函数名: strncmpi
功 能: 将一个串中的一部分与另一个串比较, 不管大小写

6.函数名: strcpy
功 能: 串拷贝

7.函数名: strcspn
功 能: 在串中查找第一个给定字符集内容的段

8.函数名: strdup
功 能: 将串拷贝到新建的位置处

9.函数名: stricmp
功 能: 以大小写不敏感方式比较两个串

10.函数名: strerror
功 能: 返回指向错误信息字符串的指针
11函数名: strcmpi
功 能: 将一个串与另一个比较, 不管大小写
12函数名: strncmp
功 能: 串比较
13函数名: strncmpi
功 能: 把串中的一部分与另一串中的一部分比较, 不管大小写
14函数名: strncpy
功 能: 串拷贝
15函数名: strnicmp
功 能: 不注重大小写地比较两个串
16函数名: strnset
功 能: 将一个串中的所有字符都设为指定字符
17函数名: strpbrk
功 能: 在串中查找给定字符集中的字符
18函数名: strrchr
功 能: 在串中查找指定字符的最后一个出现
19函数名: strrev
功 能: 串倒转
20函数名: strset
功 能: 将一个串中的所有字符都设为指定字符
21函数名: strspn
功 能: 在串中查找指定字符集的子集的第一次出现
22函数名: strstr
功 能: 在串中查找指定字符串的第一次出现
23函数名: strtod
功 能: 将字符串转换为double型值
24函数名: strtok
功 能: 查找由在第二个串中指定的分界符分隔开的单词
25函数名: strtol
功 能: 将串转换为长整数
26函数名: strupr
功 能: 将串中的小写字母转换为大写字母
27函数名: swab
功 能: 交换字节

以上是关于C语言问题 字符(串)替换的主要内容,如果未能解决你的问题,请参考以下文章

c语言 把某一字符串中的其中一段字符串替换成另一串字符串。

用C语言实现 原字符串中指定的子串的的查找与替换代码?注:一定要有用户自己输入指定子串的那个过程!

C的string.h里有没有字符串替换函数

C语言空字符串的问题;

C语言如何实现取字符串的一部分?

C语言文件中字符串的查找与替换