atoi 函式實現

2021-07-13 03:37:14 字數 1367 閱讀 9413

實現atoi()函式開始之前,測試了庫中的atoi()函式,發現庫中提供的atoi函式可以處理許多異常,下面就是庫中可以處理的異常:

1.指標為null

2.空字串

3.(+,-)號處理

4.遇到異常字元時的處理方式

5.溢位時處理,分為兩部分:

1).上溢位,輸出上界

2).下溢位,輸出下界

那麼對這些異常進行處理就可以完成乙個簡單atoi()函式了。

**實現:

/*my_atoi.c*/

#include #include #include #include typedef enum ret

ret;

ret state = invalid; //用來判斷異常的全域性變數

int my_atoi(const char* str)

if(str == '\0') //空字串

while(*str == ' ') //空白字元

if(str == '\0') //空白字串

else if(*str == '+' || *str == '-')

str++;

} while(*str)

if(ret 

}else   //異常字元

}return (int)ret;

}int main()

printf("ret = %d\n", ret);

system("pause");

return 0;

}

部分測試結果:

/*my_atoi("123aaa")*/
本文出自 「pzd流川楓」 部落格,請務必保留此出處

atoi函式的實現

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

程式設計實現atoi 函式

函式描述 將字串str轉換成乙個整數並返回結果。引數str以數字開頭,當函式從str中讀到非數字字元則結束轉換並將結果返回。int atoi const char str 正數第乙個數字 else if nret 2 負數第乙個數字 else nret nret 10 c 0 其他數字 contin...

atoi函式的實現

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