char* itoa(int val,char* buf,unsigned int radix) //考虑进制,需要参数radix指定
{
char *bufptr; //要另外定义一个指针进行操作,因为最后需要返回字符串起始地址
char *firstdig;
char temp;
unsigned int digval;
//assert(buf != NULL);
bufptr = buf;
if (val < 0)
{
*bufptr++ = '-';
val = (unsigned int)(-(int)val);
}
firstdig = bufptr;
do
{
digval =(unsigned int) val % radix;
val /= radix;
if (digval > 9)
{
*bufptr++ = (char)(digval - 10 + 'a');
}
else
{
*bufptr++ = (char)(digval + '0');
}
} while(val > 0);
*bufptr-- = '\0';//设置字符串末尾,并将指针指向最后一个字符
do //反转字符
{
temp = *bufptr;
*bufptr = *firstdig;
*firstdig = temp;
--bufptr;
++firstdig;
} while(firstdig < bufptr);
return buf;
}