atoi 代码实现
int atoi(const char* str)
{
assert(str != NULL);
int sign = 0;
int result = 0;
while(*str == ' '|| *str == '\t' || *str == '\n')
{
++str;
}
if(*str == '-')
{
sign = 1;
++str;
}
else if(*str == '+')
{
++str;
}
while(*str >= '0' && *str <= '9')
{
result = 10*result + *str - '0';
++str;
}
if(sign == 1)
{
result = 0 - result;
}
return result;
}
itoa代码实现
char* itoa(int num,char* dst,int radix)
{
char* p = dst;
unsigned digval;
char* firstDig = dst;
char temp;
if(num < 0)
{
*p++ = '-';
firstDig++;
num = 0 - num;
}
while(num > 0)
{
digval = num%radix;
num = num/radix;
if(digval > 9)
{
*p++ = (char)(digval - 10 + 'a');
}
else
{
*p++ = (char)digval + '0';
}
}
*p-- = '\0';
while(firstDig < p)
{
temp = *firstDig;
*firstDig = *p;
*p = temp;
firstDig++;
p--;
}
return dst;
}
测试代码
int _tmain(int argc, _TCHAR* argv[])
{
char str[10] = "-123434";
int num = atoi(str);
cout<<"-123434 num is "<<num<<endl;
char dstStr[50] = {0};
cout<<"-123434 radix = 10 :"<<itoa(num,dstStr,10)<<endl;
cout<<"-123434 radix = 8 :"<<itoa(num,dstStr,8)<<endl;
cout<<"-123434 radix = 16 :"<<itoa(num,dstStr,16)<<endl;
cout<<"-123434 radix = 2 :"<<itoa(num,dstStr,2)<<endl;
return 0;
}