一道编程题的困惑
/*编程题:
函数replace的功能是:将所有在字符串s中出现的t1字符串全部替换成t2字符串。
注意t1和t2的长度均大于0,但未必相等。替换之后的结果通过函数返回。
例如:
s="123abc12f", t1="12", t2="3", 则结果为"33abc3f"。
要求:
1. 已有的程序框架不准修改;
2. 所有内容最好添加在replace函数中,不过允许在replace前自定义新函数;
3. 不准在添加的代码中调用字符串有关的任何系统函数。
*/
#include "stdio.h"
#include "stdlib.h"
char *replace(char *s, char *t1, char *t2)
{
char *p1=s;
char temp;
int len_t1=0,len_t2=0,len_s=0;
int m,i,j,k,l,cur;
int flag;
while(*t1!='\0')
{
len_t1++;
t1++;
}
while(*t2!='\0')
{
len_t2++;
t2++;
}
m=len_t2-len_t1;
while(*p1!='\0')
{
len_s++;
p1++;
}
for(i=0;i<len_s-len_t1;i++)
{
flag=1;
for(j=0;j<len_t1;j++)
{
if(*(p1+i)!=*(t1+i))
{
flag = 0;
break;
}
if (flag)
cur=i-len_t1;
}
if(m>=0)
{
for(k=len_s;k>i;k--)
*(p1+k)=*(p1+k+m);
for(l=cur;l<=cur+len_t2;l++)
*(p1+l)=*(t1+l-cur);
}
if(m<0)
{
for(k=i;k<len_s;k++)
*(p1+k)=*(p1+k+m);
for(l=cur;l<=cur+len_t2;l++)
*(p1+l)=*(t1+l-cur);
}
}
return(s);
}
int main()
{
char s[100]="bdec5e947c0e31cc2aa7fa47c98fbd06";
char *t1="5";
char *t2="FIVE";
char *p;
p = replace(s, t1, t2);
printf("S=%s\n", s);
printf("Replace %s with %s is:\n%s\n", t1, t2, p);
getchar();
return 0;
}
不知道哪一步出了问题,麻烦高手们帮忙看看,谢谢!