atoi
原型:
int atoi( const char *string );
atio()函数传入一个 char *,返回 int 。
int my_atoi(const char *str)
{
assert(str);
int num = 0;
int flag = 1;
//跳过空白字符
while (*str == ' ' || *str == '\t' || *str == '\n')
str++;
//判断转换后数字的正负
if (*str == '-')
flag = -1;
//如果有输入符号,则要将此符号跳过
if (*str == '-' || *str == '+')
str++;
//每一位数字转为数字
while (*str >= '0' && *str <= '9')
{
num = num * 10 + (*str - '0');
str++;
}
return num*flag;
}
itoa
原型:
char *_itoa( int value, char *string, int radix );
三个参数:
int转为char*。
value为int的值。
str为最后字符串保存的地方。
radix为转为X进制的字符。
void my_itoa(int num, char *str, int radix)
{
char *left = str;
int flag = num;
if (num < 0) //考虑到负数的情况
num = -num;
while (num > 0)
{
*str++ = num % radix + '0';
num /= radix;
}
if (flag < 0)
{
*str++ = '-';
}
*str = '\0';
//此时是逆序存放的,需要翻转过来
char *right = str - 1;
while (left < right)
{
char tmp = *left;
*left = *right;
*right = tmp;
++left;
--right;
}
}
源码:源码下载