zoukankan      html  css  js  c++  java
  • 原创:实现atoi函数

    #include <stdio.h>
    #include <stdlib.h>
    #include <limits.h>
    
    int my_atoi(char *str)
    {
        if(NULL == str)
        {
            printf("argc is null
    ");
            return -1;        
        }
        while(' ' == *str)
            str++;
        int flag = 1;
        if('-' == *str)
        {
            flag = -1;
            str++;
        }
        if('+' == *str)
        {
            str++;
        }
        unsigned int sum = 0;
        while(*str)
        {
            if(*str >= '0' && *str <= '9')
            {
                int tmp = *str - '0';
                sum *= 10;
                sum += tmp;
                //此处判断溢出的目的是避免sum在计算过程中溢出 
                if((1 == flag) && (sum > INT_MAX))
                {
                    printf("int  正数溢出
    ");
                    return -1;
                }
                //计算最小int的绝对值,注意要使用unsigned int否则会溢出 
                unsigned int  absIntMin = (unsigned int)INT_MAX + 1;
                if((-1 == flag) && (sum > absIntMin))
                {
                    printf("int 负数溢出
    ");
                    return -1;
                }
            }
            else
            {
                printf("str (%s) exists illegal character
    ", str);
                return -1;
            }
            str++;
        }
        return flag * sum;
    }

    测试代码

    #include <float.h>
    #include <limits.h>
    extern int my_atoi(char *str);
    int main(int argc, char *argv[])
    {
        char a[20] = {''};
        while(1)
        {
            scanf("%s", a);
            printf("count = %d
    ", my_atoi(a));
        }
        return 0;
    }
  • 相关阅读:
    柱状图
    开源版本Visifire的应用
    Jmeter录制脚本-BadBoy
    Jemter环境搭建
    DOS命令
    OSI七层模型
    Google浏览器PostMan插件版安装步骤
    理解JavaScript的caller,callee,call,apply
    .net http请求
    使用命令对象代替switch语句的写法示例
  • 原文地址:https://www.cnblogs.com/penghuster/p/6403899.html
Copyright © 2011-2022 走看看