>>483
では
while (*source) if (isdigit(*source)) *p++ = *source++;
にしても終わらないのは何故でしょう?