>>958
> char *p; // と定義している場合、
> if ( *p ) は、 if ( p != (char *)NULL )

ダメじゃん
if ( *p ) は、 if ( *p != '\0') でしょ

たぶん
if ( p ) は、 if ( p != (char*)NULL)
と言いたかったのだろうけど。