This one is putting me in the fetal position, because I am deliberately trying to avoid the division and modulo that is used in the canonical algorithms for converting numbers to an ASCII string, e.g.

Implementing a string to string addition works except when I try to handle the carry, and I've implemented it nine times (yes, I actually am saying this in Ed Rooney's voice), and can't seem to make an algorithm that handles the carry correctly.

I suck atm.

-Thom

**Code:**

char* itoa(int num, char* str, int base)

{

int i = 0;

bool isNegative = false;

/* Handle 0 explicitely, otherwise empty string is printed for 0 */

if (num == 0)

{

str[i++] = '0';

str[i] = '\0';

return str;

}

// In standard itoa(), negative numbers are handled only with

// base 10. Otherwise numbers are considered unsigned.

if (num < 0 && base == 10)

{

isNegative = true;

num = -num;

}

// Process individual digits

while (num != 0)

{

int rem = num % base;

str[i++] = (rem > 9)? (rem-10) + 'a' : rem + '0';

num = num/base;

}

// If number is negative, append '-'

if (isNegative)

str[i++] = '-';

str[i] = '\0'; // Append string terminator

// Reverse the string

reverse(str, i);

return str;

}

{

int i = 0;

bool isNegative = false;

/* Handle 0 explicitely, otherwise empty string is printed for 0 */

if (num == 0)

{

str[i++] = '0';

str[i] = '\0';

return str;

}

// In standard itoa(), negative numbers are handled only with

// base 10. Otherwise numbers are considered unsigned.

if (num < 0 && base == 10)

{

isNegative = true;

num = -num;

}

// Process individual digits

while (num != 0)

{

int rem = num % base;

str[i++] = (rem > 9)? (rem-10) + 'a' : rem + '0';

num = num/base;

}

// If number is negative, append '-'

if (isNegative)

str[i++] = '-';

str[i] = '\0'; // Append string terminator

// Reverse the string

reverse(str, i);

return str;

}

Implementing a string to string addition works except when I try to handle the carry, and I've implemented it nine times (yes, I actually am saying this in Ed Rooney's voice), and can't seem to make an algorithm that handles the carry correctly.

I suck atm.

-Thom