>>275
とりあえず、strstrでまわしたほうがすっきりせん?
あと、iに長さをセットするタイミングが奇妙。

void f(char *s, const char *p)
{
 int l = strlen(p);
 while ( (s = strstr(s, p)) != NULL ) {
  memset( s, '・', l );
  s += l;
 }
}