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のページへのリンク