C C 之strtol函式詳解

2021-09-28 18:58:52 字數 1022 閱讀 5871

翻了翻舊**,發現以前對strtol這個函式不太了解,特此分析一下。

c 庫函式strtol原型為:

long int strtol(const char *str, char **endptr, int base)

其執行過程為:

把引數str所指向的字串根據給定的base轉換為乙個長整數(型別為 long int 型),並將該長整數轉換為十進位制數返回,如果沒有符合的結果,則返回乙個0值;

base 必須介於 2 和 36(包含)之間,或者是特殊值 0;

str中不符合base的部分儲存於*endptr中。

我們來看一下例項:

#include using namespace std;

int main()

輸出結果為:

初始字串為:112233abc11

符合的結果並轉換為十進位制數result: 3     , 餘下的字串endptr: 2233abc11

即符合base為2條件的只有0和1,所以通過函式我們得到11,函式將11轉為十進位制數得到3返回給result,餘下的字串儲存到endptr中,其它情況依此類推。

base的篩選條件(抄錄自

zxx2096的部落格:strtol()詳解):

當base為2時,合法字元為『0』,『1』;

base為8時,合法字元為『0』,『1』,……『7』;

base為10時,合法字元為『0』,『1』,……『9』;

base 為16時,合法字元為『0』,『1』,……『9』,『a』,……『f』;

base為24時,合法字元為『0』,……『9』,『a』,……『n』,

base為36時,合法字元為『0』,……『9』,『a』,……『z』;等等。

其中,不區分大小寫,比如,『a』和『a』會都會被轉化為10。

到此,應該對該函式的使用較為清晰了吧。

strtol函式詳解

long int strtol const char nptr,char endptr,int base 這個函式會將引數nptr字串根據引數base來轉換成長整型數。引數base範圍從2至36,或0。引數base代表採用的進製方式,如base值為10則採用10進製,若base值為16則採用16進製...

strtol函式引數詳解

long int strtol const char nptr,char endptr,int base 為什麼第二個引數不用初始化只用定義乙個未初始化的char 型別的指標即可?strtol是atoi的增強版,引數base範圍從2至36,或0。引數base代表採用的進製方式,0 10是十進位制 1...

strtol函式用法

之前想用c寫md5函式用法,中間設計大量進製轉換的內容,於是就查到了strtol這個函式 但是發現之前對其認識上有一些偏頗,所以把它的用法記錄下來 strtol是乙個c語言函式,作用就是將乙個字串轉換為長整型long,其函式原型為 long int strtol const char str,cha...