strtol
(Strtoul から転送)
出典: フリー百科事典『ウィキペディア(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
strtoul
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/08/27 01:53 UTC 版)
![]() |
この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。2021年3月)
( |
strtoul(string to unsigned long)とは、文字列をunsigned long型に変換する標準Cライブラリの関数である。stdlib.h
に定義されている。
機能
文字列
第一引数(nptr)の文字列では、+もしくは-の後に、以下のものを続けて書くことができる。
符号は省略することもできる。
また、INFの代わりにINFINITYと書くこともできる。 INFもしくはINFINITYはその前が+なら無限大に、-なら無限小になる。
また、第三引数(base)で、基数を指定することができる。
0の場合は、文字列の先頭で判断する。
- 0xで始まる場合、16進数とみなす。
- 0で始まる場合、8進数とみなす。
- それ以外の場合は、10進数とする。
baseが0でない場合、2から36までの基数を指定することができる。
戻り値
変換が成功した場合は、変換した値を返す。
変換に失敗した場合、0を返す。
正しい値がオーバーフローもしくはアンダーフローを起こす場合は、 LONG_MIN もしくは LONG_MAX を返す。
エラー
オーバーフローもしくはアンダーフローが発生した場合、errnoに ERANGE が代入される。
形式
#include <stdlib.h>
unsigned long int strtoul(const char *nptr, char **endptr, int base);
関連項目
外部リンク
- C言語関数辞典
- strtoul(3)、JM Project
- Strtoulのページへのリンク