C語言50題之模擬實現atof、atoi
atof,就是 把字串轉換成浮點數,這個函式就可以完成,他們的家族有很多:atoi,itoa,其中的意思,就不詳細說了,這裡舉出一個即可,都是一個家族的嘛,都與規律的。
首先說一下關於字串轉換成數字的問題,例如:“12345”要轉換就是12345,那麼,要是字串中出現其他的字元,例如:“123ah”,這種情況呢?
顯然這就是異常了,我們要寫好這個函式,首先就得分析一下這個異常處理的情況:
首先應處理的就是空;如果是空,那就算了;然後就是正負號;然後是小數點;最後就是正常的情況處理了。話不多說,來看看吧!
模擬實現atof
//模擬實現atof
double my_atof(char const *p)
{
double ret = 0;
int flag = 1;
int count = 0;
assert(p != NULL);
while (isspace(*p))
{
p++;
}
while (*p)
{
if (count)
{
count = count * 10;
}
if (*p == '+')
p++;
else if (*p == '-')
{
p++;
flag = -1;
}
else if (*p == '.')
{
count++;
p++;
}
else if (*p >= '0'&& *p <= '9')
{
ret = ret * 10 + (*p - '0');
p++;
}
else
return 0;
}
return ret*flag / count;
}
int main()
{
printf("%f\n", my_atof(" +23.45"));
printf("%f\n", my_atof(" -2.345"));
printf("%f\n", my_atof("+234.5"));
printf("%f\n", my_atof("-23.45"));
printf("%f\n", my_atof("2.345"));
printf("%f\n", my_atof("234.5"));
printf("%f\n", my_atof(" ."));
printf("%f\n", my_atof("12.3ab"));
system("pause");
return 0;
}
這裡總共列舉了幾個情況,根據它們的輸出結果,或許會得出一些結論:
atoi的實現和atof的是一樣的,畢竟是一個家族的:
atoi() 函式會掃描引數 str 字串,跳過前面的空白字元(例如空格,tab縮排等,可以通過 isspace() 函式來檢測),直到遇上數字或正負符號才開始做轉換,而再遇到非數字或字串結束時(‘\0’)才結束轉換,並將結果返回。
相關文章
- C語言模擬試題1C語言
- C語言模擬試題2C語言
- C語言模擬試題3C語言
- C語言模擬試題4C語言
- C語言模擬試題5C語言
- C語言模擬試題6C語言
- 資料結構之C語言模擬整數陣列實現資料結構C語言陣列
- C語言實戰!!!:商城系統模擬C語言
- C語言50題之百度筆試題C語言筆試
- C語言上機測試模擬題-1C語言
- C語言上機測試模擬題2C語言
- c語言與字串相關的庫函式的模擬實現C語言字串函式
- 模擬實現不受限制的字串函式--C語言版字串函式C語言
- 作業系統:程式狀態轉換模擬,C語言實現作業系統C語言
- JavaScript專題之模擬實現newJavaScript
- JavaScript專題之模擬實現bindJavaScript
- C語言 itoa函式及atoi函式C語言函式
- 關於c語言模擬c++的多型C語言C++多型
- c語言模擬Python的命名引數C語言Python
- 使用 C 語言實現一個虛擬機器虛擬機
- (C語言)簡單明瞭的 陣列模擬棧+ (C++)陣列模擬棧C語言陣列C++
- 50.C++物件模型的分析(上)(C語言實現物件導向特性)C++物件模型C語言
- PAT-B 1059 C語言競賽【模擬】C語言
- JavaScript專題之模擬實現call和applyJavaScriptAPP
- c語言實現貓吃老鼠的問題C語言
- 用C語言實現八數碼問題C語言
- NOIP模擬50
- 掃雷--C語言實現C語言
- C語言實現DES加密C語言加密
- c語言實現階乘C語言
- c++模擬實現順序表C++
- C語言atoi()函式:將字串轉換成int(整數)C語言函式字串
- [C練習]my_atoi函式實現函式
- C中atoi和strcpy的自定義實現
- C語言-字串函式的實現(一)之strlenC語言字串函式
- C語言-字串函式的實現(五)之strstrC語言字串函式
- C 語言實現整數快速模除(modulo)和地板除(floordiv)
- JavaScript深入之new的模擬實現JavaScript