淺析C說話中strtol()函數與strtoul()函數的用法。本站提示廣大學習愛好者:(淺析C說話中strtol()函數與strtoul()函數的用法)文章只能為提供參考,不一定能成為您想要的結果。以下是淺析C說話中strtol()函數與strtoul()函數的用法正文
C說話strtol()函數:將字符串轉換成long(長整型數)
頭文件:
#include <stdlib.h>
strtol() 函數用來將字符串轉換為長整型數(long),其原型為:
long int strtol (const char* str, char** endptr, int base);
【參數解釋】str 為要轉換的字符串,endstr 為第一個不克不及轉換的字符的指針,base 為字符串 str 所采取的進制。
【函數解釋】strtol() 會將參數 str 字符串依據參數 base 來轉換生長整型數(long)。參數 base 規模從2 至36,或0。參數base 代表 str 采取的進制方法,如base 值為10 則采取10 進制,若base 值為16 則采取16 進制等。
strtol() 會掃描參數 str 字符串,跳過後面的空白字符(例如空格,tab縮進等,可以經由過程 isspace() 函數來檢測),直到趕上數字或正負符號才開端做轉換,再碰到非數字或字符串停止時('\0')停止轉換,並將成果前往。
兩點留意:
【前往值】前往轉換後的長整型數;假如不克不及轉換或許 str 為空字符串,那末前往 0(0L);假如轉換獲得的值超越 long int 所能表現的規模,函數將前往 LONG_MAX 或 LONG_MIN(在 limits.h 頭文件中界說),並將 errno 的值設置為 ERANGE。
【示例】將字符串轉換成10進制。
#include <stdio.h> #include <stdlib.h> int main () { char szNumbers[] = "2001 60c0c0 -1101110100110100100000 0x6fffff"; char * pEnd; long int li1, li2, li3, li4; li1 = strtol (szNumbers,&pEnd,10); li2 = strtol (pEnd,&pEnd,16); li3 = strtol (pEnd,&pEnd,2); li4 = strtol (pEnd,NULL,0); printf ("轉換成10進制: %ld、%ld、%ld、%ld\n", li1, li2, li3, li4); system("pause"); return 0; }
履行成果:
轉換成10進制:
2001、6340800、-3624224、7340031
C說話strtoul()函數:將字符串轉換成unsigned long(無符號長整型數)
頭文件:
#include <stdlib.h>
strtoul() 函數源自於“string to unsigned long”,用來將字符串轉換成無符號長整型數(unsigned long),其原型為:
unsigned long strtoul (const char* str, char** endptr, int base);
【參數解釋】str 為要轉換的字符串,endstr 為第一個不克不及轉換的字符的指針,base 為字符串 str 所采取的進制。
【函數解釋】strtoul() 會將參數 str 字符串依據參數 base 來轉換成無符號的長整型數(unsigned long)。參數 base 規模從2 至36,或0。參數 base 代表 str 采取的進制方法,如 base 值為10 則采取10 進制,若 base 值為16 則采取16 進制數等。
strtoul() 會掃描參數 str 字符串,跳過後面的空白字符(例如空格,tab縮進等,可以經由過程 isspace() 函數來檢測),直到趕上數字或正負符號才開端做轉換,再碰到非數字或字符串停止時('\0')停止轉換,並將成果前往。
兩點留意:
【前往值】前往轉換後的無符號長整型數;假如不克不及轉換或許 str 為空字符串,那末前往 0;假如轉換獲得的值超越unsigned long int 所能表現的規模,函數將前往 ULONG_MAX(在 limits.h 頭文件中界說),並將 errno 的值設置為 ERANGE。
溫馨提醒:ANSI C 標准界說了 stof()、atoi()、atol()、strtod()、strtol()、strtoul() 共6個可以將字符串轉換為數字的函數,年夜家可以比較進修。別的在 C99 / C++11 標准中又新增了5個函數,分離是 atoll()、strtof()、strtold()、strtoll()、strtoull(),在此不做引見,請年夜家自行進修。
典范:將輸出的字符串轉換為無符號長整型。
#include <stdio.h> #include <stdlib.h> int main () { char buffer [256]; unsigned long ul; printf ("Enter an unsigned number: "); fgets (buffer, 256, stdin); ul = strtoul (buffer, NULL, 0); printf ("Value entered: %lu.\n", ul); system("pause"); return 0; }
運轉成果:
Enter an unsigned number: 017cyuyan Value entered: 15.
因為 base 參數被設置為 0 而且字符串“017cyuyan”以“0”開首,所以采取 8 進制轉換。