本文共 1729 字,大约阅读时间需要 5 分钟。
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, /* return 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){ return(NULL);}memset(temp,'/0', INTSIZE + 2);string = (char *) malloc(INTSIZE + 2);
if (string == NULL){ return(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));}return(string);
}转载地址:http://ruifb.baihongyu.com/