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