strtol,wcstol
stdlib.h:インデックス への移動
ヘッダーファイル
stdlib.h
カテゴリ
変換ルーチン,演算ルーチン
プロトタイプ
long strtol(const char *s, char **endptr, int radix);
long wcstol(const wchar_t *s, wchar_t **endptr, int radix);
説明
文字列を long 値に変換します。
strtol は,文字列 s を long 型の整数値に変換します。s は,long 型の値として解釈できる文字列です。文字列は,次の一般形に一致する必要があります。
[ws] [sn] [0] [x] [ddd]
記号の意味は次のとおりです。
[ws] |
= |
オプションのホワイトスペース |
[sn] |
= |
オプションの符号(+ または -) |
[0] |
= |
オプションのゼロ(0) |
[x] |
= |
オプションの x または X |
[ddd] |
= |
オプションの数字 |
strtol は,認識できない文字を最初に見つけた時点で,文字列の読み取りを終了します。
radix が 2 ~ 36 の場合は,基数 radix として long 型の整数が表されます。radix が 0 の場合は,s の最初の数文字によって変換される値の基数が決まります。
radix が 1 の場合は,無効な値とみなされます。radix が 0 未満または 36 より大きい場合は,無効な値とみなされます。
radix に無効な値を指定すると,結果は 0 になり,次の文字ポインタ *endptr を開始文字ポインタに設定します。
s の値を 8 進数として解釈する場合,0 ~ 7 以外の文字は認識されません。
s の値を 10 進数として解釈する場合,0 ~ 9 以外の文字は認識されません。
s の値をほかの基数の数値として解釈する場合は,その基数で数値を表すために使用される数字と文字だけが認識されます。たとえば,radix が 5 の場合は 0 ~ 4 だけが認識され,radix が 20 の場合は 0 ~ 9 と A ~J だけが認識されます。
endptr が NULL でない場合,strtol は,スキャンを終了した文字を指すように *endptr を設定します(*endptr = &stopper)。
戻り値
strtol は,変換後の文字列の値を返します。エラーの場合は,0 を返します。
例
#include <stdlib.h>
#include <stdio.h>
int main(void)
{
char *string = "87654321", *endptr;
long lnumber;
/* strtol は,文字列を long 型の整数に変換します */
lnumber = strtol(string, &endptr, 10);
printf("string = %s long = %ld\n", string, lnumber);
return 0;
}
移植性
POSIX | Win32 | ANSI C | ANSI C++ | |
---|---|---|---|---|
strtol |
+ |
+ |
+ |
+ |
wcstol |
+ |
+ |
+ |