strtol
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/04/30 19:34 UTC 版)
![]() | この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。(2021年3月) |
strtol (string to long integer) およびstrtoul (string to unsigned long integer) とは、それぞれ引数の文字列をC言語の符号付き長整数型long
および符号無し長整数型unsigned long
に変換する標準Cライブラリの関数である。ヘッダーファイルstdlib.h
に宣言されている。
形式
#include <stdlib.h>
long int strtol(const char *nptr, char **endptr, int base);
unsigned long int strtoul(const char *nptr, char **endptr, int base);
long int strtol(const char * restrict nptr, char ** restrict endptr, int base);
unsigned long int strtoul(const char * restrict nptr, char ** restrict endptr, int base);
機能
文字列
第1引数nptr
の文字列では、+
もしくは-
の後に、以下のものを1つ以上続けて書くことができる。
0
から9
の数字A
からZ
またはa
からz
のアルファベット文字
符号は省略することもできる。
また、第3引数base
で、2から36までの基数を指定することができる。base
が0の場合は、数字またはアルファベット文字部分の先頭で判断する。
文字列先頭に空白があった場合は無視される。
第2引数endptr
がNULL
でない場合、endptr
が指しているアドレスに変換終了位置へのポインタが保存される。
戻り値
変換が成功した場合は、変換した値を返す。
変換に失敗した場合、0
を返す。
正しい値が表現可能な範囲に収まらない場合、strtol
はLONG_MIN
もしくはLONG_MAX
を返す。strtoul
はULONG_MAX
を返す。また、errno
にERANGE
が設定される。
strtoll/strtoull
C99以降は、戻り値がlong long
型で、範囲外の場合にLLONG_MIN
またはLLONG_MAX
を返すstrtoll
と、戻り値がunsigned long long
型で、範囲外の場合にULLONG_MAX
を返すstrtoull
も規定されている。
#include <stdlib.h>
long long int strtoll(const char * restrict nptr, char ** restrict endptr, int base);
unsigned long long int strtoull(const char * restrict nptr, char ** restrict endptr, int base);
long long
とunsigned long long
は少なくとも64ビットの値を表現できることが規格で保証される。
atoi/atol
類似の機能を持つ標準関数にatoi
やatol
などがあるが、こちらはエラーが発生した場合の動作が規定されておらず、strtol
などと比べて堅牢性に欠けるため、atoi
やatol
を非推奨としているガイドラインもある[2]。
脚注
出典
関連項目
外部リンク
- strtol, strtoll - cppreference.com
- strtoul, strtoull - cppreference.com
- strtol(3) - Linux man page
- strtoul(3) - Linux man page
- strtol(3) | FreeBSD Manual Pages
- strtoul(3) | FreeBSD Manual Pages
- strtol, wcstol, _strtol_l, _wcstol_l | Microsoft Learn
- strtoll, _strtoll_l, wcstoll, _wcstoll_l | Microsoft Learn
- strtoul, _strtoul_l, wcstoul, _wcstoul_l | Microsoft Learn
- strtoull, _strtoull_l, wcstoull, _wcstoull_l | Microsoft Learn
- Strtolのページへのリンク