strtol 根據引數base來轉換

2021-08-28 03:23:35 字數 1873 閱讀 2239

編輯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

intmain()

return0;

}

輸出結果:

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