您的位置:首页 > 其它

atoi 和itoa实现

2015-08-23 20:13 302 查看
atoi 和itoa实现
<span style="font-size:14px;">#include <iostream>
using namespace std;

//atoi
//原型:int atoi(const char*nptr);
//参数nptr字符串,如果第一个非空格字符存在,是数字或者正负号则开始做类型转换,
//之后检测到非数字(包括结束符 \0) 字符时停止转换,返回整型数。否则,返回零。

int my_atoi(const char *nptr)
{

int res=0;
int flag = 0;
while (*nptr == ' ')
{
nptr++;
}

if (*nptr == '\0')
return 0;

if (*nptr == '-')
{
flag = 1;
nptr++;
}
else if (*nptr == '+')
{
nptr++;
}

while (*nptr >= '0' && *nptr <= '9')
{
res *= 10;
res += *nptr - '0';
nptr++;
}

if (!flag)
return res;
else
return -res;

}

//itoa
//将任意类型的数字转换成字符串
//int value 被转换的整数,char *string 转换后储存的字符数组
//int radix 转换进制数,如2,8,10,16 进制等
//char*itoa(int value,char*string,int radix);

char *my_itoa(int value, char* string, int radix)
{
int len = 0;
char ch;
char *s=string;

if (value < 0)
{
*string = '-';
string++;
s++;
len++;
value = -value;
}

while (value%10 ||(value%10==0 && value/10!=0))
{
len++;
*string++ = value % 10+'0';
value = value / 10;
}
//swap
*string='\0';
string--;
len--;
while (s < string)
{
ch = *string;
*string = *s;
*s = ch;
s++;
string--;
len--;
}

return string - len;

}

int main(int argc, char *argv[])
{
int value = -50980732;
char a[30];
cout << my_itoa(value,a,10) << endl;
return 0;
}</span>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: