void f(char *s, const char *p)
{
 int i, l = strlen(p);
 while (*s) {
  if (*s == *p && !strncmp(s,p,l)) {
   for (i = 0; i < l; ++i)
    *s++ = '・';
  }
  else {
   s++;
  }
 }
}
でいいだろ

だが、 pの文字列長が0でもたまたま動くし。