天天看點

strtol簡介

strtol簡介

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

strtol()會将nptr指向的字元串,根據參數base,按權轉化為long int, 然後傳回這個值。

參數base的範圍為2~36,和0;它決定了字元串以被轉換為整數的權值。

可以被轉換的合法字元依據base而定,舉例來說,當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。

當字元合法時,‘0’,……‘9’依次被轉換為十進制的0~9,‘a’,……‘z’依次轉換為十進制的10~35。

strtol()函數檢測到第一個非法字元時,立即停止檢測,其後的所有字元都會被當作非法字元處理。合法字元串會被轉換為long int,作為函數的傳回值。非法字元串,即從第一個非法字元的位址,被賦給*endptr。**endptr是個雙重指針,即指針的指針。strtol()函數就是通過它改變*endptr的值,即把第一個非法字元的位址傳給endptr。

多數情況下,endptr設定為NULL, 即不傳回非法字元串。

示例

------------------------------------------------------

char buffer[20]="10379cend$3";

char *stop;

printf("%d\n",strtol(buffer, &stop, 2));

printf("%s\n", stop);

輸出結果:

2

379cend$3

-------------------------------------------------------

printf("%d\n",strtol(buffer, &stop, 8));

543

9cend$3

--------------------------------------------------------

原文

http://hi.baidu.com/qwpsmile/item/78098326af14368e9d63d179

繼續閱讀