Archive for December, 2008

Rewriting a Utility

December 10, 2008

I can’t leave well enough alone. The most recent manifestation of this problem is the following program from Kernighan and Ritchie (“The C Programming Language”), which is perfectly OK code for converting a number to the equivalent decimal numeral.

void itoa(int n, char s[]) {
  int i, sign;
  if ((sign = n) < 0) /* record sign */
  n = -n; /* make n positive */ i = 0;
  do { /* generate digits in reverse order */
    s[i++] = n % 10 + '0'; /* get next digit */ }
  while ((n /= 10) > 0);     /* delete it */
  if (sign < 0) s[i++] = '-';
  s[i] = '\0';
  reverse(s);
}

(more…)