処理としては間違ってないような
if (*p == '/'){
  ++p;
  while (*p != '/' && *p != '\n' && *p != '\0')
    *str++ = *p++;
  *str = '\0';
}
とでもすれば間違って読みすぎることは無いかな。
あとstrの中はどうなってる?printしてみれ