當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


C語言 strtol用法及代碼示例


C語言stdlib頭文件(stdlib.h)中strtol函數的用法及代碼示例。

用法:

long int strtol (const char* str, char** endptr, int base);
將字符串轉換為長整數
解析C-stringstr將其內容解釋為指定內容的整數base,以long int價值。如果endptr不是空指針,該函數還會設置endptr指向數字後的第一個字符。

該函數首先丟棄必要數量的空白字符,直到找到第一個非空白字符為止。然後,從該字符開始,采用盡可能多的有效字符,這些字符遵循的語法取決於base參數,並將其解釋為數值。最後,一個指向第一個字符的指針,該字符位於整數表示形式之後str存儲在由指向的對象中endptr

如果值base如果為零,則預期的語法類似於整數常量的語法,該整數常量由以下各項組成:
  • 可選的符號字符(+或者-)
  • 可選的前綴,表示八進製或十六進製的基數("0"或者"0x"/"0X"分別)
  • 十進製數字序列(如果未指定基本前綴)或八進製或十六進製數字(如果存在特定前綴)

如果base值介於2到36之間,表示整數的格式應為表示指定基數的整數所需的任何有效數字和/或字母(從'0'直到'z'/'Z'對於基數36)。序列可以可選地在前麵加上一個符號(可以是+或者-) 而如果base是16,可選"0x"或者"0X"字首。

如果第一個非空格字符序列str不是上麵定義的有效整數,或者如果不存在這樣的序列,因為str為空或僅包含空格字符,不執行任何轉換。

對於除以外的語言環境"C"在語言環境中,可以接受其他主題序列形式。

參數

str
C-string以整數表示。
endptr
引用類型的對象char*,其值由函數設置為中的下一個字符str數值之後。
此參數也可以是空指針,在這種情況下不使用。
base
確定有效字符及其解釋的數字基數(基數)。
如果是這樣0,所用的基數由序列中的格式確定(請參見上文)。

返回值

成功後,函數將轉換後的整數返回為long int值。
如果無法執行有效的轉換,則返回零值(0L)。
如果讀取的值超出可表示的值範圍達long int,函數返回LONG_MAX或者LONG_MIN(在<climits>), 和errno被設定為ERANGE

示例

/* strtol example */
#include <stdio.h>      /* printf */
#include <stdlib.h>     /* strtol */

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 ("The decimal equivalents are: %ld, %ld, %ld and %ld.\n", li1, li2, li3, li4);
  return 0;
}


輸出:

The decimal equivalents are: 2001, 6340800, -3624224 and 7340031



相關用法


注:本文由純淨天空篩選整理自C標準庫大神的英文原創作品 C strtol function。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。