スポンサーリンク

STRTOUL(3) FreeBSD ライブラリ関数マニュアル STRTOUL(3)

名称

strtoul, strtoull, strtouq − 文字列を unsigned long 値、unsigned long long 値または uquad_t 値に変換

ライブラリ

標準 C ライブラリ (libc, −lc)

書式

#include <stdlib.h>
#include <limits.h>

unsigned long

strtoul(const char *nptr, char **endptr, int base);

unsigned long long

strtoull(const char *nptr, char **endptr, int base);

#include <sys/types.h>

#include <stdlib.h>
#include <limits.h>

u_quad_t

strtouq(const char *nptr, char **endptr, int base);

解説

strtoul() 関数は、 nptr にある文字列を unsigned long 値に変換します。 strtoull() 関数は、 nptr にある文字列を unsigned long long 値に変換しま す。 strtouq() 関数は、 nptr にある文字列を u_quad_t 値に変換します。変換 は与えられた base に従って行われます。この base の値は 2 から 36 の間か、 または特別な値である 0 でなければなりません。

文字列は、任意の数の空白文字 (isspace(3) により決められるような) で始ま り、オプションで一つの ‘+’ または ‘-’ 記号が続きます。 base が 0 か 16 の とき、文字列は接頭辞 ‘‘0x’’ を含むことができ、数字は基数を 16 として読み 取られます。そうでないときの、0 の base では、その次の文字が ‘0’ でなけれ ば 10 (10 進数) と見なされ、 ‘0’ であれば 8 (8 進数) と見なされます。

文字列の残りは、与えられた基数では有効な数字ではない最初の文字のところで 中止するというわかりやすいやり方で unsigned long 値に変換されます。 (10 以上の基数では、大文字または小文字の ‘A’ は 10 を、 ‘B’ は 11 を表し、 ‘Z’ は 35 を表します。)

endptr が NULL ではない場合は、 strtoul() は最初の無効な文字のアドレスを *endptr に格納します。数字が全くなかった場合は、 strtoul() は nptr の元の 値を *endptr に格納します。 (従って、戻ったときに *nptr が ‘\0’ ではな く、 **endptr が ‘\0’ である場合は、文字列全体が有効だったことになりま す。)

戻り値

strtoul() 関数は、元の (否定されていない) 値がオーバフローを起こしそうに ない限り、変換の結果、もしくは先頭にマイナス記号がある場合には変換結果の 否定を返します。オーバフローを起こす場合、 strtoul() は ULONG_MAX を返し ます。 strtoull() 関数は、元の (否定されていない) 値がオーバフローを起こ しそうにない限り、変換の結果、もしくは先頭にマイナス記号がある場合には変 換結果の否定を返します。オーバフローを起こす場合、 strtoull() は ULLONG_MAX を返します。全ての場合で、 errno に ERANGE を設定します。

エラー

       [ERANGE]

与えられた文字列が値域を超えました。変換された値は固定 されています。

関連項目

strtol(3)

規格

strtoul() 関数は、 ISO/IEC 9899:1990 (‘‘ISO C89’’) に適合しています。 strtoll() 関数は、 ISO/IEC 9899:1999 (‘‘ISO C99’’) に適合しています。 BSD strtouq() 関数は推奨されません。

バグ

現在のロケールを無視します。

FreeBSD 10.0 June 4, 1993 FreeBSD 10.0

スポンサーリンク