標準/拡張機能 | C/C++ | 依存項目 |
---|---|---|
Language Environment |
両方 |
#include <stdlib.h>
unsigned long int strtoul(const char * __restrict__ string1,
char ** __restrict__ string2, int base);
文字ストリング、string1 を、unsigned long int 値に 変換します。
基数がゼロより大きい場合には、サブジェクト・シーケンス には、正符号または負符号のどちらかが前にあると考えられる 10 進数字および文字が含まれます。文字 a (または A) ~ z (または Z) により、10 ~ 36 の値が表されますが、基数の値より小さい値の文字だけが許可されます。関数によって、数値の一部として認識できないストリングは、先頭文字 のところで読み取りが停止されます。この文字は、base より大か等しい最初の数字である場合 があります。変換が実行される場合、string2 が NULL 以外のポインターの場合は、結果出力ストリングの終了を示すために、strtoul() 関数によって string2 が ポイントに設定されます。
>>-+-------------+--+-----+--+----+--+--------+---------------->< '-white space-' +- + -+ +-0--+ '-digits-' '- - -' +-0x-+ '-0X-'
base が 2 ~ 36 の範囲である場合は、それが数値の基数になります。base が 0 の場合には、次のように接頭部により 基数 (8、16、または 10) が判別されます。接頭部 0 は基数 8 を意味します。接頭部 0x または 0X は基本 16 を意味します。接頭部なしのその他の数字の 使用は 10 進数を意味します。
string2 が NULL 以外のポインターであるかぎり、変換が たとえ正常に実行されなかったとしても、変換文字のポインターは、string2 で示されるオブジェクトに保管されます。
正常に実行された場合、strtoul() は、ストリングで表される変換後の unsigned long int 値を戻します。
正常に実行されなかった場合、変換が実行できないと、strtoul() は 0 を戻します。正しい値が表示可能値の範囲外にある場合には、strtoul() は ULONG_MAX を戻します。基数の値がサポートされない場合、strtoul() は 0 を戻します。
正常に実行されなかった場合、strtoul() は errno を次のいずれかの 値に設定します。
⁄* CELEBS56
This example converts the string to an unsigned long value.
It prints out the converted value and the substring that
stopped the conversion.
*⁄
#include <stdio.h>
#include <stdlib.h>
#define BASE 2
int main(void)
{
char *string, *stopstring;
unsigned long ul;
string = "1000e13 e";
printf("string = %s¥n", string);
ul = strtoul(string, &stopstring, BASE);
printf(" strtoul = %ld (base %d)¥n", ul, BASE);
printf(" Stopped scan at %s¥n¥n", stopstring);
}
string = 1000e13 e
strtoul = 8 (base 2)
Stopped scan at e13 e