模拟itoa和atoi

本文介绍了一个atoi函数的模拟实现,该函数用于将字符串转换为整数,并且包括了处理空格、符号和非数字字符的功能。此外,还提供了一个itoa函数的模拟实现,用于将整数转换为指定进制的字符串形式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

模拟实现atoi

函数原型:

int atoi ( const char * str );

传入一个char*,返回值为int

int my_atoi(const char* str)
{
    assert(str);
    int num = 0;
    int flag = 1;
    //跳过空白字符
    while (*str == ' ' || *str == '\t' || *str == '\n')
        str++;

    //判断转换后数字的正负
    flag = (*str == '-') ? -1 : 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* str,int radix)

int转为char*。
value为int的值。
str为最后字符串保存的地方。
radix为转为X进制的字符。

char* my_itoa(int value,char* str,int radix)
{
    char* firstdig;
    char* p = str;
    unsigned int digval;

    if (value < 0)
    {
        *p++ = '-';
        value = -value;
    }

    firstdig = p;
    //这时存到p中(也就是str)的数字为反的
    do 
    {
        //数字一定是无符号整型,并且数字为对进制位取得余数。
        digval = value%radix;
        value /= radix;

        if (digval > 9)
            *p = (char)(digval - 10 + 'a');
        else
            *p = (char)(digval + '0');
        p++;
    } while (value>0);


    //这里需要翻转一下
    //先把末尾置为\0结束符
    *p-- = '\0';

    while (firstdig < p)
    {
        char temp = *p;
        *p = *firstdig;
        *firstdig = temp;
        firstdig++;
        p--;
    }

    return str;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值