算法描述:函数replace()实现将old中所有出现sub处替换为rpl子串,其余不变,最终替换结果存入news中。例如,old为“uvwabuv uvuvwx uvxw”,sub为“uvw”,rpl为“abcd”,new的结果为“abcdabuv uvabcdx uvxw”。
算法实现:
void replace(char *old, char *sub, char *rpl, char *news)
{
char *s1,*s2;
while(*old != '\0')
{
for(s1 = old, s2 = sub; *s1 != '\0' && *s2 != '\0' && *s1 == *s2; s1++, s2++);
if(*s2 != '\0')//其余不变
*news++ = *old++;
else
{
//替换
for(s2 = rpl; *s2 != '\0'; s2++)
*news++ = *s2;
old = old + strlen(sub);
}
}
*news = '\0';
}