swscanf() — ワイド文字データの読み取り
フォーマット
#include <wchar.h>
int swscanf(const wchar_t *buffer, const wchar_t *format, argument-list);
言語レベル
ANSI
スレッド・セーフ
はい
ロケール依存
この関数の振る舞いは、現行ロケールの LC_CTYPE カテゴリーおよび LC_NUMERIC カテゴリーの影響を受ける可能性があります。また、LOCALETYPE(*LOCALEUCS2) または LOCALETYPE(*LOCALEUTF) が コンパイル・コマンドで指定されている場合、この振る舞いは、現行ロケールの LC_UNI_CTYPE カテゴリー および LC_UNI_NUMERIC カテゴリーの影響も受ける可能性があります。この関数は、コンパイル・コマンドに対して LOCALETYPE(*CLD) が指定されている場合には使用できません。詳細については、CCSID およびロケールの理解を参照してください。
ワイド文字関数
詳細については、ワイド文字を参照してください。
説明
swscanf() 関数は、fwscanf() 関数と同等ですが、引数バッファーが 入力の取得元をストリームではなくワイド・ストリングに指定する点が異なります。 ワイド・ストリングの末尾に達することは、 fwscanf() 関数のファイルの終わりを検出することに相当します。
戻り値
swscanf() 関数は、正常に変換され、割り当てられたフィールドの数を 戻します。戻り値には、読み取りは行われたが、割り当てられなかったフィールドは含まれません。変換が行われる前に、ストリングの末尾が検出される場合、 戻り値は EOF です。
errno の値は、EINVAL (無効な引数) に 設定される可能性があります。
例
この例では、swscanf() 関数を使用して、ストリング
ltokenstring からさまざまなデータを読み取り、そのデータを表示します。
#include <wchar.h>
#include <stdio.h>
wchar_t *ltokenstring = L"15 12 14";
int i;
float fp;
char s[10];
char c;
int main(void)
{
/* Input various data */
swscanf(ltokenstring, L"%s %c%d%f", s, &c, &i, &fp);
/* If there were no space between %s and %c, */
/* swscanf would read the first character following */
/* the string, which is a blank space. */
printf("string = %s¥n",s);
printf("character = %c¥n",c);
printf("integer = %d¥n",i);
printf("floating-point number = %f¥n",fp);
}