您的位置:首页 > 其它

atoi和itoa的模拟实现

2018-04-03 09:23 387 查看
#include<stdio.h>
#include<ctype.h>
#include<iostream>
#define MAX (0x7fffffff)
#define MIN (0x8000000)
int my_atoi(const char*str)
{
if(str==NULL)
return 0;
const char*p=str;
int flag=1;
long long res=0;
while(isspace(*p))//判断是否为空字符
{
++p;
}
if(*p=='-')
{
flag=-1;
++p;
}else if(*p=='+')
{
++p;
}
while(*p>='0'&&*p<='9')
{
res=res*10+*p-'0';
if(flag==1)//判断是否超过int类型的范围
{
if(res>MAX)
res=2147483647;
}
else if(flag==-1)
{
if(-res<MIN)
res=2147483648;
}
++p;
}
return (int)flag*res;
}

char *my_itoa(int num,char*str,int radix)
{
char zm[] = "0123456789abcdefghijklmnopqrstuvwxyz";
char *p = str;
char arr[100] = {0};
int sum = num;
int i = 0;
if (radix<2 && radix>36)
{
printf("error data");
return str;
}
if (num < 0)
{
printf("error data");
return str;
}
while (sum>0)
{
arr[i] = zm[sum%radix];
i++;
sum /= radix;
}
for (int j = i - 1; j >= 0; --j)
{
*p = arr[j];
p++;
}
*p = '\0';
return str;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: