Linux C/C++后台开发

Talk is cheap. Show me the code!

atoi实现

atoi()函数会扫描参数str字符串,跳过前面的空白字符(例如空格,tab缩进等,可以通过isspace()函数来检测),直到遇上数字或正负符号才开始做转换,后续再遇到非数字或字符串结束时(‘\0’)才结束转换,并将前面部分的转换结果返回。

#define INT_MAX 0x7fffffff        //2147483647
#define INT_MIN 0x80000000 //-2147483648
int atoi(const char *str) 
{
    if (str == NULL)
    {
        return 0;
    }
    if (str[i] == '\0')
    {
        return 0;
    }
    int i = 0;
    while (str[i] == ' ')
    {
        i++;
    }
    int flag = 1;
    if (str[i] == '+')
    {
        i++;
    }
    else if (str[i] == '-')
    {
        flag = -1;
        i++;
    }
    long long sum = 0;
    while (str[i] != '\0')
    {
        if (str[i] >= '0' && str[i] <= '9')
        {
            sum = sum * 10 + str[i] - '0';
        }
        else
        {
            return sum;
        }
        if (sum > INT_MAX)
        {
            return flag > 0 ? INT_MAX : INT_MIN;
        }
        i++;
    }
    return sum;
}
阅读更多
版权声明:本文为博主原创文章,如需转载请标明出处链接!否则追究法律责任! https://blog.csdn.net/peng314899581/article/details/71079418
文章标签: atoi leetcode
个人分类: C/C++ 笔试整理
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

atoi实现

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭