在c語言中,有乙個函式我們可能不經常使用,那就是字串轉換為整數函式 atoi()
atoi (表示 ascii to integer)是把字串轉換成整型數的乙個函式
atoi( ) 函式會掃瞄引數 nptr字串,跳過前面的空白字元(例如空格,tab縮排等,可以通過isspace( )函式來檢測),直到遇上數字或正負符號才開始做轉換,而再遇到非數字或字串結束時('\0')才結束轉換,並將結果返回。如果 nptr不能轉換成 int 或者 nptr為空字串,那麼將返回 0
當字串為空,或者輸入的字串是『0』,atoi()是通過乙個全域性變數來區分的,如果非法輸入,返回0,並把這個全域性變數設為乙個特殊標記,如果輸入的是『0』,返回0,不會設定全域性變數,這樣就可以區分得到的0值得情況
enum typename
;int get_typename = kvalid; //全域性變數來定義標記
int strtoint(const char* str)
if (*str != '\0')
}return num;
}long long strtointcore(const char * src, int minus)
src++;
} else
}if (*src == '\0')
return num;
}
測試用例
1、輸入的字串表示正數,負數,0
2、邊界測試(最大正整數,最小負整數)
3、特殊輸入測試(輸入字串為null,輸入字串為空字串,輸入的字串有非法數字字元)
劍指offer 把字串轉換為整數
題目要求 將乙個字串轉換成乙個整數,要求不能使用字串轉換整數的庫函式。數值為0或者字串不是乙個合法的數值則返回0。這道題的難點在於溢位判斷,但令人遺憾的是溢位的算例似乎取消了,不進行溢位判斷依然能通過除錯。本文的解決方案未進行溢位判斷。這道題比較簡單,先看第乙個元素是正負號還是數字,確定標誌位。然後...
劍指offer 字串轉換整數
對於這個問題,本題考查的實際上就是字串轉換成整數的問題,或者說是要你自行實現atoi函式。那如何實現把表示整數的字串正確地轉換成整數呢?以 345 作為例子 當我們掃瞄到字串的第乙個字元 3 時,由於我們知道這是第一位,所以得到數字3。當掃瞄到第二個數字 4 時,而之前我們知道前面有乙個3,所以便在...
劍指offer 將字串轉換為數字
將乙個字串轉換成乙個整數,要求不能使用字串轉換整數的庫函式。數值為0或者字串不是乙個合法的數值則返回0 輸入乙個字串,包括數字字母符號,可以為空如果是合法的數值表達則返回該數字,否則返回0示例1 2147483647 1a332147483647 0 include include using na...