編輯strtol函式會將引數nptr字串根據引數base來轉換成長整型數,引數base範圍從2至36。
中文名strtol
概述 strtol函式會將引數np
函式說明
引數base範圍從2至36
使用學科
c語言1 函式定義
2 函式說明
3 特點
4 使用範例
編輯long int strtol(const char *nptr,char **endptr,int base);
編輯引數base範圍從2至36,或0。引數base代表採用的進製方式,如base值為10則採用10進製,若base值為16則採用16進製制等。當base值為0時則是採用10進製做轉換,但遇到如』0x』前置字元則會使用16進製做轉換、遇到』0』前置字元而不是』0x』的時候會使用8進製做轉換。
一開始strtol()會掃瞄引數nptr字串,跳過前面的空格字元,直到遇上數字或正負符號才開始做轉換,再遇到非數字或字串結束時('\0')結束轉換,並將結果返回。若引數endptr不為null,則會將遇到不合條件而終止的nptr中的字元指標由endptr返回;若引數endptr為null,則會不返回非法字串。
編輯1.不僅可以識別十進位制整數,還可以識別其它進製的整數,取決於base引數,比如strtol("0xdeadbee~~", null, 16)返回0xdeadbee的值,strtol("0777~~", null, 8)返回0777的值。
2.endptr是乙個傳出引數,函式返回時指向後面未被識別的第乙個字元。例如char *pos; strtol("123abc", &pos, 10);,strtol返回123,pos指向字串中的字母a。如果字串開頭沒有可識別的整數,例如char *pos; strtol("abcabc", &pos, 10);,則strtol返回0,pos指向字串開頭,可以據此判斷這種出錯的情況,而這是atoi處理不了的。
3.如果字串中的整數值超出long int的表示範圍(上溢或下溢),則strtol返回它所能表示的最大(或最小)整數,並設定errno為erange,例如strtol("0xdeadbeef~~", null, 16)返回0x7fffffff並設定errno為erange
編輯#include
#include
int
main()
return
0;
}
輸出結果:
string = 3.1415926 this stopped it
strtod = 3.141593
stopped scan at: this stopped it
string = -1011 this stopped it
strtol = -1011
stopped scan at: this stopped it
string = 10110134932
strtol = 45(base 2)
stopped scan at: 34932
strtol = 4423(base 4)
stopped scan at: 4932
strtol = 2134108(base 8)
stopped scan at: 932
strtol函式引數詳解
long int strtol const char nptr,char endptr,int base 為什麼第二個引數不用初始化只用定義乙個未初始化的char 型別的指標即可?strtol是atoi的增強版,引數base範圍從2至36,或0。引數base代表採用的進製方式,0 10是十進位制 1...
根據uuid來掛載磁碟
生產上原來有幾台機器,是使用傳統的 dev sdx的方式來進行掛載的,經常的在重啟以後碟符會變化導致認不到盤的錯誤 我們推薦使用uuid的方式來進行磁碟的掛載 注 uuid universally unique identifiers全域性唯一識別符號 一 linux磁碟分割槽uuid的獲取方法 l...
Qualifer根據名字來注入
qualifer 作用 在自動按照型別注入的基礎之上,再按照bean的id注入。它在給字段注入時不能獨立使用,必須和 autowire一起使用 但是給方法引數注入時,可以獨立使用。屬性 注意一定要放在和 autowired一起使用,否則不起作用,autowired自動型別注入 value 指定bea...