简单的C语音字符串和整数以及浮点数互转(递归实现)

本文详细介绍了C++代码中整数、浮点数、字符串的相互转换方法及原理,包括整数转字符串、双精度转字符串、字符串转整数、字符串转双精度等操作的实现,并附带关键函数的代码解释。

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

代码如下:
  • int转字符串
void inttostr(int curnum,char** str )
{
    if (curnum!= 0)
    {
        inttostr(curnum / 10,str);
        **str = curnum % 10 + 48;
        (*str)++;
    }
}
  • double转字符串
void doutostr(double currnum,char* str)
{
    if (currnum == 0)
    {
        *str = '\0';
    }
    else if (currnum>0)
    {
        int currInt = 10 * currnum;
        *str = currInt + 48;
        doutostr(currnum * 10 - currInt, str + 1);
    }
}
  • 字符串转int
int strtoint(char* str,int currValue)
{
    if (str == NULL)
    {
        return 0;
    } 
    if (*str == '\0' || *str > '9' || *str < '0')
    {
        return currValue;
    }
    else
    {
        return strtoint(str + 1, currValue * 10 + (*str - 48));
    }
}
  • 字符串转double
double stringtodouble(char* numStr)
{
    if (numStr == NULL)
    {
        return 0;
    }

    double returnValue=0;
    char* start = numStr;
    char* point = numStr;
    bool isFushu = false;

    if (*point == '-')
    {
        isFushu = true;
        start++;
    }
    while (*point != '\0' && *point != '.')
    {
        point++;
    }
    if (*point == '.')
    {
        *point = '\0';
        returnValue = strtoint(start, 0) + strtodouble(point + 1);
    }
    else
    {
        returnValue = strtoint(start, 0);
    }
    if (isFushu)
    {
        returnValue = -returnValue;
    }
    return returnValue;
}

double strtodouble(char* str)
{
    if (str == NULL || *str > '9' || *str < '0')
    {
        return 0;
    }
    if (*str == '\0')
    {
        return 0;
    }
    else
    {
        return  0.1*( ( strtodouble(str+1) ) + (*str-48));
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值