do { } while (*p++);
は
for (p=d; *p; *p++) { }
の方がカッコイイかな