(1)
12というマジックナンバーが悪印象かな?

for(; *s!='\0'; s++) *(p++)=*(s++);
って感じ?(確かめてないけど)
(2)で
B,Dは書き込み禁止の文字列ポインタ
をfuncに与えている可能性がある。