每次给你三个字符串A,B,C,你要把A里面的B全部用C替换.(B在A里面出现的顺序替换)

每三行分别输入A,B,C.(A,B,C的长度都小于256)输出替换后的字符串.SampleInputAaaaaDFaAaUAaaaaDFaAaaUB_BB^ADFFFJH... 每三行分别输入A,B,C.(A,B,C的长度都小于256)

输出替换后的字符串.

Sample Input
AaaaaDFaA
a
U

AaaaaDFaA
aa
U

B_B
B
^

ADFFFJHJHJ
H
haha

Sample Output
AUUUUDFUA
AUUDFaA
^_^
ADFFFJhahaJhahaJ
(用C哈)
展开
 我来答
xiaoyanlong7
2010-09-06 · TA获得超过108个赞
知道答主
回答量:66
采纳率:0%
帮助的人:63.8万
展开全部
这里的Test[] 代表A
Find_Str[] 代表B
Replace_Str[] 代表C

void Replace(char Test[],char Find_Str[],char Replace_Str[])
{
int Test_Len = strlen(Test);
int Find_Str_Len = strlen(Find_Str);
int Replace_Str_Len = strlen(Replace_Str);
int i,j,k,Sum=0;

for(i=0;i< Test_Len - Find_Str_Len + 1;i++)
{
for(j=0;j<Find_Str_Len;j++)
if(Test[j+i]!=Find_Str[j])
break;

if(j==Find_Str_Len)
{
Sum++;
if(Replace_Str_Len>=Find_Str_Len)/*替换字符串和被替换字符串长度比较*/
for(k=Test_Len-1;k>=i+Find_Str_Len-1;k--)/*向后移动*/
Test[k+Replace_Str_Len-Find_Str_Len] = Test[k];

else
for(k=i+Find_Str_Len;k<Test_Len;k++)/*向前移动*/
Test[k+Replace_Str_Len-Find_Str_Len] = Test[k];

Test_Len += Replace_Str_Len-Find_Str_Len; /*改变字符串长度*/
Test[Test_Len] = '\0';

for(k=i;k<Replace_Str_Len+i;k++)
Test[k] = Replace_Str[k-i];

i += Replace_Str_Len;/*关键之处:当替换数中包括被替换数时,防止反复替换,*/
}
}
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友e59b677
2010-09-07 · TA获得超过622个赞
知道小有建树答主
回答量:926
采纳率:0%
帮助的人:245万
展开全部
#include <stdio.h>
#include <string.h>

int main(void)
{
char aa[65026], dest[256], change[256], tmp[65026];
char *p = NULL, *perend = NULL;

while(NULL != gets(aa))
{
gets(dest);
gets(change);
perend = aa;
while(NULL != (p = strstr(perend, dest)))
{
sprintf(tmp, "%s%s", change, &p[strlen(dest)]);
strcpy(p, tmp);
perend = p + strlen(change);
}
printf("%s\n", aa);
}
return 0;
}
关于字符串长度。
我考虑的是如果下面的case如何不越界,故设为65026
111111111....111(255个1)
1
nnnnnnnnn....nnn(255个n)
那么返回最大字符串长度为255*255+1=65026
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式