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);
}