当前位置: 代码迷 >> C语言 >> [讨论]如何替换字符串?(效率)
  详细解决方案

[讨论]如何替换字符串?(效率)

热度:200   发布时间:2006-04-29 20:18:00.0
用数据结构的图~!!!
那样的效率是最高的,但是生成图又太麻烦了哈~~

----------------解决方案--------------------------------------------------------
#include<stdio.h>
#include<string.h>
void main()
{
char a[20],*p,f,g;
int c,d;
printf("请输入一串字符:");
gets(a);
p=a;
printf("请输入要替换的字符:");
f=getchar();
getchar();
printf("请输入替换的字符:");
g=getchar();
d=strlen(a);
for(c=0;c<d;c++,p++)
{
if((*p)==f)
(*p)=g;
}
puts(a);
}
----------------解决方案--------------------------------------------------------

如果只是输出
#include <stdio.h>
int fun(char *A,char *B);

int main(void)
{
char A[256],B[256],C[256];
char *ptrA,*ptrB,*ptrC;
char *S;
while(gets(A)==A&& gets(B)==B&&gets(C)==C)
{
ptrA=A;
ptrB=B;
ptrC=C;
int b=strlen(ptrB);
while(*ptrA)
{
if(fun(ptrA,ptrB))
{
ptrA+=b-1;
printf("%s",ptrC);
}
else
{
printf("%c",*ptrA);
}
ptrA++;
}

printf("\n");
}

return ;
}
int fun(char *A,char *B)
{
while(*A!=0&&*B!=0)
{
if(*A!=*B)return 0;
A++,B++;
}
return 1;
}


----------------解决方案--------------------------------------------------------

#include <stdio.h>
#include <conio.h>

int main(void)
{
char stra[20], ca, cb;
int ia;

fgets(stra, 19, stdin); //主串
fflush(stdin);
ca = getchar(); //被替换字符
fflush(stdin); //替换字符
cb = getchar();

for (ia = 0; stra[ia] != '\0'; ia++)
{
if (stra[ia] == ca)
{
stra[ia] = cb;
}
}
puts(stra);

getch();
return 0;
}


----------------解决方案--------------------------------------------------------
楼上你看错题了
----------------解决方案--------------------------------------------------------
见笑了
----------------解决方案--------------------------------------------------------
谢谢!
----------------解决方案--------------------------------------------------------
[讨论]时间用的还是太长

时间用的还是太长。可能函数调用时用的时间太长。
#include <stdio.h>
#include<string.h>
int fun(char *A,char *B);

int main(void)
{
char A[256],B[256],C[256];
char *ptrA,*ptrB,*ptrC;
char *S;
int b;
while(gets(A)==A&& gets(B)==B&&gets(C)==C)
{
ptrA=A;
ptrB=B;
ptrC=C;
b=strlen(ptrB);
while(*ptrA)
{
if(fun(ptrA,ptrB))
{
ptrA+=b-1;
printf("%s",ptrC);
}
else
{
printf("%c",*ptrA);
}
ptrA++;
}

printf("\n");
}

return ;
}
int fun(char *A,char *B)
{
while(*A!=0&&*B!=0)
{
if(*A!=*B)return 0;
A++;B++;
}
return 1;
}


----------------解决方案--------------------------------------------------------
  相关解决方案