一个字符串函数
写一个用字符串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 ;
}
----------------解决方案--------------------------------------------------------
明天起来看!!!
----------------解决方案--------------------------------------------------------