手写的,没有经过优化。
将整数转换为相应的字符串。注意INT64的最大值,以免溢出。
char* itoa_my(INT64 value, char *buffer, size_t size)
{
assert(buffer != NULL);
assert(size > 1);
size_t Len = 0;
INT64 tempvalue = value;
if (value < 0)
tempvalue = -value;
// get the length of the int
while (tempvalue > 0)
{
Len++;
tempvalue /= 10;
}
if ( Len > size - 1 )
{
free(buffer);
buffer = (char *)malloc(sizeof(char)*(Len) + 1);
}
if (value < 0)
{
Len++;
buffer[0] = '-';
tempvalue = -value;
}
buffer[Len] = '/0';
do
{
buffer[--Len] = '0' + tempvalue % 10;
tempvalue /= 10;
}while(tempvalue > 0);
return buffer;
}