生活随笔
收集整理的這篇文章主要介紹了
编写实现atoi函数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目:給定一個字符串,要求轉成整數,不允許使用atoi或者其它類似庫函數。
方案:實現這個函數并不難,但是要考慮以下幾個問題
? ? ? ? ? ?1.考慮字符串為空指針的時候
? ? ? ? ? ?2.考慮字符串為空串
? ? ? ? ? ?3.考慮是否有+/-符號
? ? ? ? ? ?4.考慮是否有不合法的字符
? ? ? ? ? ?5.考慮結果是否會溢出
[cpp]?view plaincopy
const?int?MAXN?=?2147483647;?? const?int?MIN?=?-2147483648;?? bool?isOk;?? ?? ?? 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;??? }??
總結
以上是生活随笔為你收集整理的编写实现atoi函数的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。