atoi函式的自實現

2021-09-13 23:56:41 字數 1479 閱讀 1052

atoi (表示 ascii to integer)是把字串轉換成整型數的乙個函式,應用在電腦程式和辦公軟體中。int atoi(const char *nptr) 函式會掃瞄引數 nptr字串,會跳過前面的空白字元(例如空格,tab縮排)等。

概括一下就是可以把乙個字串轉換成相應的整型數,並且可以自動跳過字串前面的空格

如「 123」可以轉換成123;

「-123」可以轉換成-123;

「+123」可以轉換成123;

下面是自己實現atoi函式的**

我們需要考慮以下幾種情況

#include #include #include #include #define null_ptr_err 1

#define erange 2

int errcode = 0;

int my_atoi(char* str)

/*跳過開始的空格*/

while(' ' == (*str))

str++;

/*跳過空格之後,到達了字串結尾,則退出*/

if(0 == *str)

return 0;

/*負數*/

if(*str == '-' )

/*正數*/

else if(*str == '+')

/*正數*/

else if(isdigit(*str))

/*如果不是以上內容,則直接退出*/

else

while(isdigit(*str))

str++;

}/*根據正負號返回正確的結果*/

return negative?-ret:ret;

}int main(void)

執行結果如下

從結果上來看,好像能應對所有的狀況了,但是沒有辦法應對開頭字母的情況。

下面我自己稍微改進了一下**使其適應開頭字母空格混合情況

int my_atoi(char *str)

//跳過空格--atoi只會跳過空格

while(!isdigit(*str))

else if('-' == *str)

else if('+' == *str)

else if(isdigit(*str))

else

}while(isdigit(*str))

str++;

}return negative?-ret:ret;

}int main(void)

上述**會在一開始跳過所有的特殊字元(非『+』、『-』、十進位制數值)

列印結果如下

atoi函式的實現

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

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