2enumStatus{KValid=0,KInvalid};3intg_nStatus=KValid;4longStrToIntCore(char*str,boolminus)5{6longnum=0;7while(*str!='\0')8{9if(*str>'0'&&*str<'9')10{11intflag=minus?-1:1;12num=num*10+flag*(*str-'0');13if((!minus&&" />

日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

模仿c的字符轉整數函數 atoi

系統 1835 0
      
         1
      
       #include<stdio.h>


      
         2
      
      
        enum
      
       Status {KValid = 
      
        0
      
      
        , KInvalid};


      
      
         3
      
      
        int
      
       g_nStatus =
      
         KValid;


      
      
         4
      
      
        long
      
       StrToIntCore(
      
        char
      
       *str,
      
        bool
      
      
         minus)


      
      
         5
      
      
        {


      
      
         6
      
      
        long
      
       num = 
      
        0
      
      
        ;


      
      
         7
      
      
        while
      
       (*str !=
      
        '
      
      
        \0
      
      
        '
      
      
        )


      
      
         8
      
      
            {


      
      
         9
      
      
        if
      
       (*str >
      
        '
      
      
        0
      
      
        '
      
       && *str<
      
        '
      
      
        9
      
      
        '
      
      
        )


      
      
        10
      
      
                {


      
      
        11
      
      
        int
      
       flag = minus ? -
      
        1
      
      :
      
        1
      
      
        ;


      
      
        12
      
                   num = num * 
      
        10
      
       + flag*(*str - 
      
        '
      
      
        0
      
      
        '
      
      
        );


      
      
        13
      
      
        if
      
       ((!minus && num > 
      
        0x7FFFFFFF
      
      )||(minus && num <(signed 
      
        int
      
      )
      
        0x80000000
      
      
        ))


      
      
        14
      
      
                    {


      
      
        15
      
                       num = 
      
        0
      
      
        ;


      
      
        16
      
      
        break
      
      
        ;


      
      
        17
      
      
                    }


      
      
        18
      
                   str++
      
        ;


      
      
        19
      
      
                }


      
      
        20
      
      
        else
      
      
        21
      
      
                {


      
      
        22
      
                   num = 
      
        0
      
      
        ;


      
      
        23
      
      
        break
      
      
        ;


      
      
        24
      
      
                }


      
      
        25
      
      
            }


      
      
        26
      
      
        if
      
       (*str == 
      
        '
      
      
        \0
      
      
        '
      
      
        )


      
      
        27
      
      
            {


      
      
        28
      
               g_nStatus =
      
         KValid;


      
      
        29
      
      
            }


      
      
        30
      
      
        return
      
      
         num;


      
      
        31
      
      
        }


      
      
        32
      
      
        int
      
       StrToInt(
      
        char
      
       *
      
        str)


      
      
        33
      
      
        {


      
      
        34
      
           g_nStatus =
      
         KInvalid;


      
      
        35
      
      
        long
      
       num = 
      
        0
      
      
        ;


      
      
        36
      
      
        if
      
       (*str != NULL && *str !=
      
        '
      
      
        \0
      
      
        '
      
      
        )


      
      
        37
      
      
            {


      
      
        38
      
      
        bool
      
       minus = 
      
        false
      
      
        ;


      
      
        39
      
      
        if
      
      (*str == 
      
        '
      
      
        +
      
      
        '
      
      
        )


      
      
        40
      
                   str++
      
        ;


      
      
        41
      
      
        else
      
      
        if
      
      (*str == 
      
        '
      
      
        -
      
      
        '
      
      
        )


      
      
        42
      
      
                {


      
      
        43
      
                   str++
      
        ;


      
      
        44
      
                   minus = 
      
        true
      
      
        ;


      
      
        45
      
      
                }


      
      
        46
      
      
        if
      
       (*str !=
      
        '
      
      
        \0
      
      
        '
      
      
        )


      
      
        47
      
      
                {


      
      
        48
      
                   num =
      
         StrToIntCore(str,minus);


      
      
        49
      
      
                }


      
      
        50
      
      
            }


      
      
        51
      
      
        return
      
      
        int
      
      
        (num);


      
      
        52
      
      
        }


      
      
        53
      
      
        54
      
      
        void
      
      
         main()


      
      
        55
      
      
        {


      
      
        56
      
           printf(
      
        "
      
      
        %d
      
      
        "
      
      ,StrToInt(
      
        "
      
      
        -12
      
      
        "
      
      
        ));


      
      
        57
      
       }
    

?

在前面的代碼中,把空字符串“”和只有一個正號或負號的情況都考慮到了。同事還考慮整數的最大值是0x7fffffff,最小值0x80000000,一次要分兩種情況判斷溢出。

?

模仿c的字符轉整數函數 atoi


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 类乌齐县| 资溪县| 文登市| 遵化市| 北川| 东乌珠穆沁旗| 海南省| 沐川县| 宜州市| 天柱县| 永修县| 兰坪| 平昌县| 临海市| 巴东县| 屏边| 宁陕县| 稷山县| 瑞丽市| 巴楚县| 陵水| 信丰县| 青冈县| 云阳县| 湖口县| 阳春市| 广州市| 仙居县| 大关县| 望奎县| 清丰县| 梨树县| 梅河口市| 鄯善县| 恩施市| 华阴市| 高州市| 石景山区| 大悟县| 葵青区| 宝应县|