Verified Jobs Live
C++ and C Intermediate Level ~2 min read

C++ Interview Question Implement itoa

Quick Revision Summary

Implementing itoa function is a popular interview question. Here’s one implementation from SAP. char *itoa(int value) { int count, /* number of characters in string */ i, /* loo...

Interactive Practice Mode
Formulate your thoughts or take notes before revealing the model solution.
Model Answer & Deep-Dive Explanation

Implementing itoa function is a popular interview question. Here’s one implementation from SAP.

char *itoa(int value)
{
int count, /* number of characters in string */
i, /* loop control variable */
sign; /* determine if the value is negative */
char *ptr, /* temporary pointer, index into string */
*string, /* retu
 value */
*temp; /* temporary string array */

count = 0; if ((sign = value) < 0) /* assign value to sign, if negative */ { /* keep track and invert value */ value = -value; count++; /* increment count */ }

/* allocate INTSIZE plus 2 bytes (sign and NULL) */ temp = (char *) malloc(INTSIZE + 2); if (temp == NULL) { retu (NULL); } memset(temp,'\0', INTSIZE + 2);

string = (char *) malloc(INTSIZE + 2); if (string == NULL) { retu (NULL); } memset(string,'\0', INTSIZE + 2); ptr = string; /* set temporary ptr to string */

/*--------------------------------------------------------------------+ | NOTE: This process reverses the order of an integer, ie: | | value = -1234 equates to: char [4321-] | | Reorder the values using for {} loop below | +--------------------------------------------------------------------*/ do { *temp++ = value % 10 + '0'; /* obtain modulus and or with '0' */ count++; /* increment count, track iterations*/ } while (( value /= 10) >0);

if (sign < 0) /* add '-' when sign is negative */ *temp++ = '-';

*temp-- = '\0'; /* ensure null terminated and point */ /* to last char in array */

/*--------------------------------------------------------------------+ | reorder the resulting char *string: | | temp - points to the last char in the temporary array | | ptr - points to the first element in the string array | +--------------------------------------------------------------------*/ for (i = 0; i < count; i++, temp--, ptr++) { memcpy(ptr,temp,sizeof(char)); }

retu (string); }

Interviewer Evaluation Points & Scoring Rubric

  • 1 Analyze Time Complexity (Big O) and Space Complexity explicitly.
  • 2 Address boundary cases: empty input, null pointers, single elements.
  • 3 Write idiomatic, readable code with descriptive variable naming.