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...