strtol()
関数は、
nptr
にある文字列を
long
値に変換します。
strtoll()
関数は、
nptr
にある文字列を
long long
値に変換します。
strtoq()
関数は、
nptr
にある文字列を
quad_t
値に変換します。
変換は与えられた
base
に従って行われます。
この
base
の値は 2 から 36 の間か、
または特別な値である 0 でなければなりません。
文字列は、任意の数の空白文字
(isspace(3)
により決められるような) で始まり、
オプションで一つの
‘+’
または
‘-’
記号がそれに続きます。
base
が 0 か 16 のときは、文字列は接頭辞
‘0x’
を含むことができ、数字は基数を 16 として読み取られます。
そうでないときの、0 の
base
では、その次の文字が
‘0’
でなければ
10 (10 進数) と見なされ、
‘0’
であれば
8 (8 進数) と見なされます。
文字列の残りは、
与えられた基数では有効な数字ではない最初の文字のところで中止するという
わかりやすいやり方で
long
値に変換されます。
(10 以上の基数では、大文字または小文字の
‘A’
は 10 を、
‘B’
は 11 を表し、
‘Z’
は 35 を表します。)
endptr
が空ポインタではない場合は、
strtol()
は最初の無効な文字のアドレスを
*endptr
に格納します。
数字が全くなかった場合は、
strtol()
は
nptr
の元の値を
*endptr
に格納します。
(従って、戻ったときに
*nptr
が
‘\0’
ではなく、
**endptr
が
‘\0’
である場合は、文字列全体が
有効だったことになります。)