|
≫ |
|
|
|
HP OpenVMS HP C ランタイム・ライブラリ・リファレンス・マニュアル (下巻)
nptr がポイントするワイド文字列の先頭の部分を
unsigned long整数に変換します。
形式
#include <wchar.h>
unsigned long int wcstoul (const wchar_t *nptr, wchar_t **endptr, int base);
関数バリアント
wcstoul関数は,それぞれ 32 ビットと 64 ビットのポインタ・サイズで使用するための
_wcstoul32と
_wcstoul64という名前のバリアントを持っています。ポインタ・サイズ固有の関数の使用方法については,『HP C ランタイム・ライブラリ・リファレンス・マニュアル(上巻)』第 1.9 節を参照してください。
引数
nptr
unsigned longに変換するワイド文字列へのポインタ。
endptr関数が変換プロセスの中で検出した最初の認識不可能な文字のアドレスを格納できるオブジェクトのアドレス ( 変換する文字列の中の,最後に処理された文字の直後の文字 )。 endptr が NULL ポインタである場合,最初の認識不可能な文字のアドレスは保存されません。
base変換の底として使用する 2〜36 の値。
base が 16 の場合,オプションの符号の後の先頭のゼロは無視され, 0x と 0X も無視されます。
base が 0 の場合,文字のシーケンスは,整定数を解釈するのに使用されるのと同じ規則で解釈されます。オプションの符号の後では,先頭の 0 は 8 進変換を示し,先頭の 0x または 0X は 16 進変換を示し,その他の先頭の文字の組み合わせは 10 進変換を示します。
説明
wcstoul関数は,底の値に応じて,さまざまな形式の文字列を認識します。この関数は,指定された文字列に含まれる先頭の空白文字 (
iswspace関数の定義に従う) を無視します。オプションのプラスまたはマイナス記号と,それに続く,底の値に応じた整定数を表現できる数字または英字のシーケンスを認識します。最初の認識不可能な文字が検出された時点で,変換は終了します。
戻り値
x
|
変換された値。
|
0
|
文字列が認識不可能なワイド文字で始まるか,
base の値が無効であることを示します。文字列が認識不可能なワイド文字で始まる場合, *
endptr は
nptr に設定されます。関数は
errno
を EINVAL に設定します。
|
ULONG_MAX
|
変換された値がオーバフローを引き起こすことを示します。関数は
errno
を ERANGE に設定します。
|
例
#include <stdlib.h>
#include <stdio.h>
#include <wchar.h>
#include <errno.h>
#include <limits.h>
/* This test calls wcstoul() to convert a string to an */
/* unsigned long integer. wcstoul outputs the resulting */
/* integer and any characters that could not be converted. */
#define MAX_STRING 128
main()
{
int base = 10,
errno;
char *input_string = "1234.56";
wchar_t string_array[MAX_STRING],
*ptr;
size_t size;
unsigned long int val;
printf("base = [%d]\n", base);
printf("String to convert = %s\n", input_string);
if ((size = mbstowcs(string_array, input_string, MAX_STRING)) ==
(size_t)-1) {
perror("mbstowcs");
exit(EXIT_FAILURE);
}
printf("wchar_t string is = [%S]\n", string_array);
errno = 0;
val = wcstoul(string_array, &ptr, base);
if (errno == 0) {
printf("returned unsigned long int from wcstoul = [%u]\n", val);
printf("wide char terminating scan(ptr) = [%S]\n\n", ptr);
}
if (errno == ERANGE) {
perror("error value is :");
printf("ULONG_MAX = [%u]\n", ULONG_MAX);
printf("wcstoul failed, val = [%d]\n\n", val);
}
}
|
この例のプログラムを実行すると,次の結果が生成されます。
base = [10]
String to convert = 1234.56
wchar_t string is = [1234.56]
returned unsigned long int from wcstoul = [1234]
wide char terminating scan(ptr) = [.56]
|
|