日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

编写实现atoi函数

發布時間:2025/6/15 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 编写实现atoi函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目:給定一個字符串,要求轉成整數,不允許使用atoi或者其它類似庫函數。

方案:實現這個函數并不難,但是要考慮以下幾個問題

? ? ? ? ? ?1.考慮字符串為空指針的時候
? ? ? ? ? ?2.考慮字符串為空串
? ? ? ? ? ?3.考慮是否有+/-符號
? ? ? ? ? ?4.考慮是否有不合法的字符
? ? ? ? ? ?5.考慮結果是否會溢出

[cpp]?view plaincopy
  • const?int?MAXN?=?2147483647;??
  • const?int?MIN?=?-2147483648;??
  • bool?isOk;??
  • ??
  • //atoi函數,不合法情況isOk為false,返回0??
  • int?StrToInt(char?*string){??
  • ????if(string?==?NULL){?//空指針??
  • ????????isOk?=?false;??
  • ????????return?0;??
  • ????}??
  • ????isOk?=?true;??
  • ????int?len?=?strlen(string);??
  • ????//空串??
  • ????if(len?==?0){??
  • ????????isOk?=?false;??
  • ????????return?0;??
  • ????}??
  • ????//??
  • ????long?long?sum?=?0;??
  • ????bool?flag?=?false;??
  • ????//判斷+和-符號??
  • ????if(string[0]?==?'+'?||?string[0]?==?'-'){??
  • ?????????flag?=?true;??
  • ????}??
  • ????//求值??
  • ????for(int?i?=?0;?i?<?len;?i++){??
  • ????????if(i?==?0?&&?flag){?//如果是+和-符號??
  • ????????????continue;??
  • ????????}??
  • ????????if(string[i]?>=?'0'?&&?string[i]?<=?'9'){??
  • ????????????sum?=?sum*10?+?string[i]-'0';??
  • ????????}??
  • ????????else{??
  • ????????????isOk?=?false;??
  • ????????????return?0;??
  • ????????}??
  • ????????if(sum?>?MAXN?||?sum?<?MIN){?//值溢出的情況??
  • ????????????isOk?=?false;??
  • ????????????return?0;??
  • ????????}??
  • ????}??
  • ????//有符號的時候處理??
  • ????if(flag){??
  • ????????if(len?==?1){??
  • ????????????isOk?=?false;??
  • ????????????return?0;??
  • ????????}??
  • ????????if(string[0]?==?'-'){??
  • ????????????sum?*=?-1;??
  • ????????}??
  • ????}??
  • ????return?(int)sum;?//long?long轉int??
  • }??
  • 總結

    以上是生活随笔為你收集整理的编写实现atoi函数的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。