這道題看似很簡單,實現其基本功能,大部分人都能用10行**之內的**解決。
...
while(*str)
...
但是,當我們要把很多特殊的情況即測試用例都考慮進去,卻不是一件容易的事。
比如:空指標、空字串「」、正負號、溢位等方方面面的測試用例都考慮到,並在寫**時對這些特殊的輸入都定義好合理的輸出,
#define _crt_secure_no_warnings 1
#include
#include
#include
#include
#include
enum state;
int status = invalid;//定義乙個全域性變數區分是合法輸入("0")、不合法輸入(空字串)返回的0
int strtoint(const char *str)
if (*str == '\0')
return
0;//空字串"",非法
else
if (*str == '+')
str++;
while (*str)
}else
return (int)sum;
str++;
}status = valid;
return (int)sum;
}}int main()
總結:
功能測試(輸入的字串表示正數、負數和0)
邊界值測試(最大的正整數、最小是負整數)
特殊輸入測試(輸入字串為null指標、輸入字串為空字串、輸入的字串中有非數字字元等)
字串轉化成整數
看起來容易,但是有好多需要考慮到邊界條件。比如1.如果含有正負號或者非數字字元怎麼辦?2.最大正整數和最小負整數以及溢位 3.輸入的字元不能轉換成整數的時候,應該如何處理錯誤 所以其實還是比較複雜。不要看到題目就傻呵呵的寫了。js 中有封裝好的parseint,但是傳入的引數要注意 parseint...
劍指offer 把字串轉化成整數
將乙個字串轉換成乙個整數,要求不能使用字串轉換整數的庫函式。數值為0或者字串不是乙個合法的數值則返回0 輸入乙個字串,包括數字字母符號,可以為空 如果是合法的數值表達則返回該數字,否則返回0。字串從頭開始遍歷,判斷第乙個字元是 或 來確定正負值,後續需要判斷char是否再0到9的ascii碼之間,需...
整數轉化成字串 字串轉換為整數
整數轉化成字串 字串轉換為整數 整數轉化成字串 char inttostr int num,char str temp i 0 字串結束標誌 i i 1 回到temp最後乙個有意義的數字 while i 0 str j 0 字串結束標誌 return str 字串轉換為整數,僅考慮十進位制,不考慮非...