模拟库函数 atoi 和 itoa

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;
    }
}

源码:源码下载

猜你喜欢

转载自blog.csdn.net/m0_37925202/article/details/81043198