StrToInt实现

StrToInt实现

字符串转整型数的整体思想很简单,但是实现起来,细节问题很容易忽略,故写此博客来加深记忆。

- 细节处理

  • 参数中const变量指针使用;
  • 空指针处理;
  • 字符串前面空格处理;
  • 字符串正负号处理;
  • 字符前面 0 字符的处理;
  • 最大整数和最大负数溢出处理;
  • 错误字符输入处理

- 函数实现

int StrToInt(const char *str)
{
    int result = 0;
    int flag = 1;
    // 判断字符串是否是NULL 
    if (str == NULL)
    {
        return -1; 
    }
    // 跳过前面的空格 
    while ((*str) == ' ')
        str++;
    // 判断字符串正负号
    if ((*str) == '-')
    {
        flag = -1;
        str++;
    }
    if ((*str) == '+')
    {
        flag = 1;
        str++;
    }
    // 跳过字符串前面的0 
    while ((*str) == '0')
    {
        str++;
    }
    // 遍历剩下字符串,进行字符转数字 
    while((*str) != '\0')
    {
        // 判断字符是否合法 
        if ((*str >= '0') && (*str <= '9'))
        {
            int temp = result;
            // 正数处理 
            if (flag == 1)
            {
                result = (result * 10) + (*str - '0');
            }
            // 负数处理 
            else if (flag == -1)
            {
                result = (result * 10) - (*str - '0');
            }
            // 溢出判断 
            if (((flag == 1) && (result < temp)) || ((flag == -1) && (result > temp)))
                return -1;
            str++;
        }
        else
        {
            return -1;
        }
    }
    return result;
}
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值