vfwscanf() — フォーマット済みワイド文字データの読み取り
形式
#include <stdarg.h>
#include <stdio.h>
int vfwscanf(FILE *stream, const wchar_t *format, va_list arg_ptr);言語レベル
ANSI
スレッド・セーフ
はい
ロケール依存
この関数の振る舞いは、現行ロケールの LC_CTYPE カテゴリーおよび LC_NUMERIC カテゴリーの影響を受ける可能性があります。 また、LOCALETYPE(*LOCALEUCS2) または LOCALETYPE(*LOCALEUTF) が コンパイル・コマンドで指定されている場合、この振る舞いは、現行ロケールの LC_UNI_CTYPE カテゴリー および LC_UNI_NUMERIC カテゴリーの影響も受ける可能性があります。 この関数は、コンパイル・コマンドに対して LOCALETYPE(*CLD) が指定されている場合には使用できません。 詳しくは、 CCSID とロケールについてを参照してください。
統合ファイル・システム・インターフェース
詳しくは、 ワイド文字 を参照してください。
ワイド文字関数
この関数は、コンパイル・コマンドに対して SYSIFCOPT(*NOIFSIO) が指定されている場合には使用できません。
説明
vfwscanf() 関数は、ストリームから引数の可変値で指定されたロケーションへ
ワイド・データを読み取ります。 vfwscanf() 関数は、 fwscanf() 関数と同様に機能します。ただし、 arg_ptr は、プログラム内の呼び出しごとに番号が異なる引数のリストを指します。 これらの引数は、呼び出しごとに va_start によって初期化する必要があります。 反対に、
fwscanf() 関数は引数のリストを持てますが、
そのリストの引数の数はプログラムをコンパイルしたときに決定されます。
各引数は、format-string の型指定子に対応する型を持つ変数へのポインター
でなければなりません。 format には、
fwscanf() 関数の書式ストリングと同じ書式および関数があります。
戻り値
vfwscanf() 関数は、正常に変換され、割り当てられたフィールドの数を
戻します。 戻り値には、読み取りは行われたが、割り当てられなかったフィールドは含まれません。 変換が行われていない場合に、ファイルの終わりを読み取ろうとすると、戻り値は EOF になります。 戻り値 0 は、フィールドが割り当てられなかったことを
意味します。
例
#include <stdio.h>
#include <stdarg.h>
#include <wchar.h>
int vread(FILE *stream, wchar_t *fmt, ...)
{
int rc;
va_list arg_ptr;
va_start(arg_ptr, fmt);
rc = vfwscanf(stream, fmt, arg_ptr);
va_end(arg_ptr);
return(rc);
}
#define MAX_LEN 80
int main(void)
{
FILE *stream;
long l;
float fp;
char s[MAX_LEN + 1];
char c;
stream = fopen("mylib/myfile", "r");
/* Put in various data. */
vread(stream, L"%s", &s [0]);
vread(stream, L"%ld", &l);
vread(stream, L"%c", &c);
vread(stream, L"%f", &fp);
printf("string = %s\n", s);
printf("long double = %ld\n", l);
printf("char = %c\n", c);
printf("float = %f\n", fp);
}
/*************** If myfile contains ************************
**************** abcdefghijklmnopqrstuvwxyz 343.2 ***********
********************** expected output is: *********************
string = abcdefghijklmnopqrstuvwxyz
long double = 343
char = .
float = 2.000000
*/
関連情報
- fscanf() — フォーマット済みデータを読み取る
- fwprintf() — データをワイド・キャラクターとしてフォーマットし、ストリームに書き込む
- fwscanf() — ワイド文字を使用したストリームからのデータの読み取り
- scanf() — データを読み取る
- sscanf() - データを読み取る
- swprintf() — ワイド文字をフォーマット設定し、バッファーに書き込む
- swscanf() — ワイド文字データを読み取る
- vfscanf() — フォーマット済みデータを読み取る
- vfwscanf() — フォーマット済みワイド文字データを読み取る
- vscanf() — フォーマット済みデータを読み取る
- vsscanf() — フォーマット済みデータを読み取る
- vswscanf() — フォーマット済みワイド文字データを読み取る
- vwscanf() — フォーマット済みワイド文字データを読み取る
- wprintf() — ワイド文字としてデータをフォーマットし、出力する
- wscanf() — ワイド文字フォーマット文字列を使用したデータを読み取る
- <wchar.h>