Page 88

Adapt the ideas of printd to write a recursive version of itoa; that is, convert an integer into a string by calling a recursive routine.

#include <stdio.h>
#define MAXSTR 1000

int itoa(int in, char out[], int i);

int main()
{
	char out[MAXSTR];
	itoa(-1234, out, 0);
	printf("%s", out);
}

int itoa(int n, char out[], int i)
{
	int sign = 1;

	if (n < 0) {
		sign = -1;
		out[i++] = '-';
	}

	if (n / 10) {
		i = itoa(sign * (n / 10), out, i);
	}

	out[i++] = sign * n % 10 + '0';
	out[i] = '\0';

	return i;
}