atoi函式的實現

2021-05-22 11:59:42 字數 1071 閱讀 8294

atoi函式的實現

寫這個函式的實現的原因很簡單,而且也很容易,直接抄襲的庫中的原始碼。因為有朋友面試的時候遇到了,前幾天乙個哥們面intel的時候也被問到了,巧合的是今天看廣聯達的面試題再次遇到。一周之內看到三次,讓我不得不重視一下啊,畢竟自己也要開始面試題呀面試題了!

其實這個函式比較容易實現,不過寫的很完善就不是那麼容易,我自己也寫了一下,然後去glibc庫中看了一下,發現自己比較多的情況沒有考慮到的,**貼出來必然會被鄙視。所以這裡就貼glibc庫中使用的**。本來打算貼vxwork的**,可是vxwork的這段**比較長而且有點晦澀,所以最後決定還是貼上相對更見簡明的glibc庫中的**

其實不管是atoi、atol都是呼叫的strtol這個函式,所以實際貼的是這個函式的**。其實直接自己看glibc庫就好了:

#define

long_max 2147483647l  

#define

long_min (-2147483647l-1l)

long int _strtol_internal (

const char *nptr, 

char **endptr, 

int base, 

int group)

else if (*nptr == '+')

++nptr;

if (*nptr < '0' || *nptr > '9')

assert (base == 0);

base = 10;

if (*nptr == '0')

else

base = 8; }

while (*nptr >= '0' && *nptr <= '9')

result *= base;

result += digval;

++nptr; }

return (

long int) result * sign; }

atoi函式就是這個函式講第二個引數置為null,第三個引數置為10。不知道你注意到了那些空格,越界之類的判斷沒有。我同學說他寫出來的**最後就被要求加上了這些東西,最後還因此被卡掉了(說是考慮不夠慎密,汗)。

atoi函式的實現

atoi函式的實現 寫atoi函式的時候需要注意一下幾點 1.字串前的空白 2.字串所表示數值的正負號 3.結束條件,遇到非數字或者字元 0 結束 4.考慮溢位,分別與int值所能表示的最大 0x7fffffff 和最小值 0x8000000 進行比較 5.考慮異常輸入情況下,用全域性變數valid...

atoi 函式的實現

atoi 函式的功能 將字串轉換成整型數 atoi 會掃瞄引數nptr字串,跳過前面的空格字元,直到遇上數字或正負號才開始做轉換,而再遇到非數字或字串時 0 才結束轉化,並將結果返回 返回轉換後的整型數 atoi 函式實現的 name xif coder xifan 2010 yahoo.cn ti...

atoi 函式的實現

atoi 函式的功能 將字串轉換成整型數 atoi 會掃瞄引數nptr字串,跳過前面的空格字元,直到遇上數字或正負號才開始做轉換,而再遇到非數字或字串時 0 才結束轉化,並將結果返回 返回轉換後的整型數 atoi 函式實現的 name xif coder xifan 2010 yahoo.cn ti...