第一次嘗試
#define _crt_secure_no_warnings
#include
#include
intmyatoi
(const
char
* str)
;char
* ts = ts;
//設定符號位,用來判定這樣的情況:不見可字元,數字,不可見字元,數字
//如果前面為不可見字元,在遇到數字後,flag1就++,這樣就不會進入後面的不可見字元
int flag1 =0;
//外部迴圈判定前面的 數字、正負號、不可見字元
while((
*str >
47&&
*str <58)
||((*str==
43||
*str==45)
&&flag1==0)
||(*str>=0&&
*str<=
32&&flag1==0)
)else
}*ts =
'\0'
;int i =0;
//設定符號位,如果是『-』,那麼flag就加一
int flag =0;
if(ts[i]
==45
)int ret =0;
while
(ts[i]
!='\0'
) ret /=10
;//將數字篩選出來轉換成對應的整形之後,如果flag==1,那麼就讓數字減去自己的二倍,即可獲得對應數字的負值
if(flag ==1)
//如果flag==0,那麼正常輸出轉化好的數字
return ret;
}int
main()
;int i =0;
char c =0;
scanf
("%c"
,&c)
;while
(c !=
'\n'
)printf
("%s\n"
, str)
;int ret =
myatoi
(str)
;printf
("%d\n"
, ret)
;/*int a = atoi(" 123 123jklb");
printf("%d\n", a);*/
return0;
}
用法:將字串裡的數字字元轉化為整形數。返回整形值。
注意:轉化時跳過前面的不可見字元,直到遇上數字或正負符號才開始做轉換,而再遇到非數字或字串結束時\0
才結束轉換,並將結果返回。具體轉化思路見上面**的注釋。
發表於 2020-11-25 12:16
模擬實現atoi函式
atoi函式就是把一串字串轉換為int型整數的函式,通過將字串中的字元乙個乙個強制型別轉換,並且存入乙個臨時陣列中,再將陣列中的數字處理一下即可得到我們需要的整數。實現這個函式的過程中,我們需要注意負數的處理,要進行一次判斷,確定返回值的正負。其他的字元按照ascii碼表進行轉換即可。下面是 inc...
c語言 模擬實現c語言庫函式atoi
題目 模擬實現c語言庫函式atoi 思路 模擬實現庫函式atoi,要考慮幾種特殊情況,1.空格問題 2.符號問題 3.異常 字母 4.數字太大,越界問題。使用c語言編寫函式,將乙個數字字串轉換為對應的數字 功能類似於庫函式的atoi,考慮異常輸入 include include include in...
模擬實現atoi
注意到細節問題 一 函式引數 1 形參虛const修飾 2 注意對形參指標判空 二 需要考慮到的細節 1 負數和0 注意區別傳入字元 0 和異常時返回值 2 空字串 3 溢位問題 4 輸入字串非非數字字元 int g flag 0 區別空串 long long strtodig const char...