void sprintf_comma(char *buf, char *fmt, ...) { register long i, r, flag, len; va_list args; va_start(args, fmt); vsprintf(buf, fmt, args); va_end(args); for (len = i = strlen(buf), flag = 0; i >= 0; i--) { if (buf[i] >= '0' && buf[i] <= '9') { if (++flag > 3) { flag = 1; for (r = ++len; r > i; r--) buf[r] = buf[r - 1]; buf[i + 1] = ','; } } } }