- do {
- int remainder = offset % 10;
- int quotient = offset / 10;
- if (offset < 0 && 0 < remainder) {
- remainder -= 10;
- quotient++;
- }
- *--p = (remainder < 0 ? -remainder : remainder) + '0';
- width--;
- offset = quotient;
- } while (offset != 0);
- for (width -= negative; 0 < width; width--) {
- putc (' ', file);
+ if (offset < 0) {
+ do
+ *--p = '0' - offset % 10;
+ while ((offset /= 10) != 0);
+
+ *--p = '-';
+ } else {
+ do
+ *--p = '0' + offset % 10;
+ while ((offset /= 10) != 0);