STRTOL(3) FreeBSD ライブラリ関数マニュアル STRTOL(3)
名称
strtol, strtoq − 文字列の数値を long 値、long long 値または quad_t 値に変 換 |
ライブラリ
標準 C ライブラリ (libc, −lc) |
書式
#include <stdlib.h> long |
strtol(const char *nptr, char **endptr, int base); long long |
strtoll(const char *nptr, char **endptr, int base); #include <sys/types.h> |
#include <stdlib.h> quad_t |
strtoq(const char *nptr, char **endptr, int base); |
解説 |
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’ である場合は、文字列全体が有効だったことになりま す。) |
戻り値
strtol() 関数は、値がアンダフローやオーバフローを起こさない限り、変換の結 果を返します。アンダフローが起こった場合は、 strtol() は LONG_MIN を返し ます。オーバフローが起こった場合は、 strtol() は LONG_MAX を返します。 strtoll() 関数は、値がアンダフローやオーバフローを起こさない限り、変換の 結果を返します。アンダフローが起こった場合は、 strtoll() は LLONG_MIN を 返します。オーバフローが起こった場合は、 strtoll() は LLONG_MAX を返しま す。全ての場合、 errno は ERANGE に設定されます。 |
エラー
[ERANGE]
与えられた文字列が値域を超えました。変換された値は固定 されています。 関連項目 |
規格
strtol() 関数は、 ISO/IEC 9899:1990 (‘‘ISO C89’’) に適合しています。 strtoll() 関数は、 ISO/IEC 9899:1999 (‘‘ISO C99’’) に適合しています。 BSD strtoq() 関数は推奨されません。 |
バグ
現在のロケールを無視します。 FreeBSD 10.0 June 4, 1993 FreeBSD 10.0 |