>>681
>str=p+1;
分割し終わったときに二度とstrが使えなくなる罠…

char *dats[] = {dat.a, dat.b, dat.c, dat.d };
ってやればループが使えて便利かも。