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