• atoi函数的实现


    写atoi函数的时候需要注意一下几点

    1. 字符串前的空白

    2. 字符串所表示数值的正负号

    3. 结束条件,遇到非数字或者字符'\0'结束

    4. 考虑溢出,分别与int值所能表示的最大(0x7fffffff)和最小值(0x8000000)进行比较

    5. 考虑异常输入情况下,用全局变量valid来标识,对于"+/-"  "0" "+abc"需要进行区分

     1 #define INT_MAX ((int)0x7FFFFFFF)
     2 #define INT_MIN ((int)0x80000000)
     3 //#define INT_MAX (~(unsigned int)0/2)
     4 
     5 bool valid=true;
     6 
     7 int myatoi(const char * str)
     8 {
     9     bool minus=false;
    10     long long result=0;
    11     valid=false;
    12     if(str==NULL)
    13         return 0;
    14     while(*str==' ')
    15         str++;
    16     if(*str=='-')
    17     {
    18         minus=true;
    19         str++;
    20     }
    21     else if(*str=='+')
    22         str++;
    23     if(*str<'0'||*str>'9')
    24         return 0;
    25 
    26     valid=true;
    27     while(*str>='0' && *str<='9')
    28     {
    29         result=result*10+*str-'0';
    30         if((minus && result>INT_MAX + 1LL) || (!minus && result>INT_MAX))
    31         {
    32             valid=false;
    33             return 0;
    34         }
    35 
    36         str++;
    37     }
    38 
    39     if(minus)
    40         result*=-1;
    41     return (int)result;
    42 }
  • 相关阅读:
    css Tab选项卡1
    顺序栈的相关操作(初始化、入栈、出栈)
    用jdk在cmd下运行编译java程序
    UNIX标准及实现
    正则表达式
    gdb调试
    CSS 公共样式
    babel更新之后的 一些坑
    webpack4.x配置详情
    webpack4.x打包配置
  • 原文地址:https://www.cnblogs.com/qianye/p/2966874.html
Copyright © 2020-2023  润新知