标题:[讨论]如何替换字符串?(效率)
只看楼主
nap
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2006-4-20
 问题点数:0 回复次数:17 
[讨论]如何替换字符串?(效率)

每次给你三个字符串A,B,C,你要把A里面的B全部用C替换.(B在A里面出现的顺序替换)
每三行分别输入A,B,C.(A,B,C的长度都小于256)
输出替换后的字符串.如:
AaaaaDFaA
a
U

输出:
AUUUUDFUA

我是这么做的:
#include<stdio.h>
#include<string.h>
main()
{
int i,j,k,n,m,q,p,f;
char a[257],b[257],c[257];
while(gets(a))
{
gets(b);
gets(c);
m=strlen(b);/*算出长度*/
for(i=0;a[i]!='\0';i++)
{ q=i;
for(j=i,p=0;p<m;p++)
{ if(a[j]==b[p])
{ n=1;
j++;
}
else
{for(f=q;f<=j;f++)
printf("%c",a[f]);
n=0;
break;
}
}
if(n==1)
{ for(k=0;c[k]!='\0';k++)
printf("%c",c[k]);
i=j-1;
}
}
printf("\n");
}
return 0;
}
能帮我改进一下效率吗?或把你的程序让我看一下?谢!

搜索更多相关主题的帖子: 字符 效率 include int 
2006-04-29 17:56
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
得分:0 
你是要替换字符串还是字符,你那输入的是替换字符啊

日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-04-29 18:55
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
得分:0 
char a[257],b[257],c[257];


错误,你输入256个字符试试,能输入进去吗

日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-04-29 18:56
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
得分:0 
gets(b);

用fgets(),gets()容易出现问题,超出数组范围

日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-04-29 18:57
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
得分:0 
while(gets(a))

这什么意思?你要输入多少次a

日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-04-29 18:58
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
得分:0 
结构比较混乱,清晰的结构别人才愿意看,格式需要调整,正规些

日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-04-29 19:00
lj_860603
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:714
专家分:0
注 册:2006-1-25
得分:0 

程序效率不高,而且会浪费很多空间,有时候会溢出.你看你定义的是字符数组,假如你输入的字符串长度小于数组个数就会浪费,假如代替的不是一个字符而是一个字符串,那么代替之后原来那个字符数组有可能空间不够.


我的原则很简单:不做不喜欢的事!
2006-04-29 19:30
nap
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2006-4-20
得分:0 
不好意思,应该是替换字符。用while(gets(a))是为了循环进行。现在最主要的是运算时间太长。因为题目
规定了256个字符所以可以用char a[257],b[257],c[257];
有什么好的办法既省时又省空间?辛苦了!帮帮忙,谢~。

2006-04-29 19:49
lj_860603
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:714
专家分:0
注 册:2006-1-25
得分:0 
已经说了,动态内存分配,指针.

我的原则很简单:不做不喜欢的事!
2006-04-29 19:50
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
得分:0 
是滴,动态内存分配,代替字符更简单了,你在看看

日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-04-29 19:59



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-61159-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.237247 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved