当前位置: 代码迷 >> C语言 >> 一个字符串函数
  详细解决方案

一个字符串函数

热度:130   发布时间:2006-10-25 19:38:35.0
一个字符串函数

写一个用字符串2替换字符串1中的某个字符的函数!!!

//char *substitution(字符ch,字符串1,字符串2);

char *substitution(char ch,char *str1,char *str2)
{
int n;
for(n=0;n<strlen(str2);n++)
{
*(strrchr(str1,ch)+n)=*(str2+n)
}
return str1;
}

main()
{
int n;
char str1[31];
strcpy(str1,"ABC");
strcpy(str1,substitution('A',str1,"ab"));
for(n=0;n<strlen(str1);n++)
{
printf("%c",*(str1+n));
}
}

这么程序错哪?怎么不能运行呢???




----------------解决方案--------------------------------------------------------
啊哦,不对,搞错了,覆盖了!!!
----------------解决方案--------------------------------------------------------
char *substitution(char ch,char *str1,char *str2)
{
int n;
for(n=strlen(str1)-1;n>(strrchr(str1,ch)-str1);n--)
{
*(str1+n)=*(str1+n+1);
}
for(n=0;n<strlen(str2);n++)
{
*(strrchr(str1,ch)+n)=*(str2+n);
}
return str1;
}


还是不行!!!!


----------------解决方案--------------------------------------------------------
变态的做法

char*substitution(char ch,char*str1,char*str2)
{
char*ptr1=str1,*ptr2=str2 ,*tem;
int str1_n=0,str2_n=0,tem_n,tem_t=0 ;

while(*ptr1)
{
if(*ptr1==ch)tem_t++;
str1_n++;
ptr1++;
}
tem_n=str1_n ;

while(*ptr2)
{
str2_n++;
ptr2++;
}
tem=ptr1+(str2_n-1)*tem_t;
while(tem_n>=0)
{
*tem=*(str1+tem_n);
tem--;
tem_n--;
}
ptr1=str1 ;

tem++;
while(*tem)
{
if(*tem==ch)
{
ptr2=str2 ;
while(*ptr2)
{
*ptr1++=*ptr2++;
}
tem++;
}
else
*ptr1++=*tem++;
}

return str1 ;
}
----------------解决方案--------------------------------------------------------

明天起来看!!!


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