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 >