strtol, strtoul - 文字列から数値への変換

【書式】

#include <stdlib.h>

long strtol(const char *s, char **endptr, int base);

unsigned long strtoul(const char *s, char **endptr, int base);

【解説】

strtol() は文字列sをlongに変換します。

strtoul()は文字列sをunsigned longに変換します。

先行する空白は無視します。endptrがNULLでなければ、変換が終了したとき

のポインタの値を*endptrに格納します。変換の基数baseが2から36のときに

は、入力はbase進数と仮定します。

baseに16を指定したときには文字列は0xあるいは0Xではじまってもかまいま

せん。

baseに0を指定すると、文字列 s の内容によって自動的に基数が決定されま

す。文字列の先頭が0xあるいは0Xのときには16進数として、0であれば8進数

として、それ以外のときには10進数として解釈されます。

10以上の数値を表す文字は'A' - 'Z'または'a' - 'z'です。

【リターン値】

変換された値を返します。数字がない場合には0を返します。

オーバーフローが発生したときにはerrno にERANGEをセットし、strtol()は

符号にしたがって LONG_MAX 、LONG_MINを、strtoul()はULONG_MAXを返しま

す。パラメタが正しくないときにはerrno にEINVALをセットして0 を返しま

す。

【エラー】

ERANGE

変換でオーバーフローが発生しました

EINVAL

パラメタが正しくありません

【可搬性】

strtol()

ANSI, UNIX, DOS窓

strtoul()

ANSI, DOS窓

【参照】

atol(3), strtod(3)

【copyright (c) 安江正樹@東海大学理学部物理学科】