vfwprintf() — 引数データのワイド文字としてのフォーマット設定とストリームへの書き込み

形式

#include <stdarg.h>
#include <stdio.h>
#include <wchar.h>
int vfwprintf(FILE *stream, const wchar_t *format, va_list arg);

言語レベル

ANSI

スレッド・セーフ

はい

ロケール依存

この関数の振る舞いは、現行ロケールの LC_CTYPE カテゴリーおよび LC_NUMERIC カテゴリーの影響を受ける可能性があります。 また、LOCALETYPE(*LOCALEUCS2) または LOCALETYPE(*LOCALEUTF) が コンパイル・コマンドで指定されている場合、この振る舞いは、現行ロケールの LC_UNI_CTYPE カテゴリー および LC_UNI_NUMERIC カテゴリーの影響も受ける可能性があります。 この関数は、コンパイル・コマンドに対して LOCALETYPE(*CLD) が指定されている場合には使用できません。 詳しくは、 CCSID とロケールについてを参照してください。

統合ファイル・システム・インターフェース

この関数は、コンパイル・コマンドに対して SYSIFCOPT(*NOIFSIO) が指定されている場合には使用できません。

ワイド文字関数

詳しくは、 ワイド文字 を参照してください。

説明

vfwprintf() 関数は fwprintf() 関数と同等ですが、変数引数リストが argに置き換えられる点が異なります。arg は、va_start マクロ (および場合によっては後続の va_arg 呼び出し) によって初期化されます。 vfwprintf() 関数は、va_end マクロを呼び出しません。

関数 vfwprintf()vswprintf()、および vwprintf() は va_arg マクロを呼び出すため、戻り後の arg の値は指定されません。

戻り値

vfwprintf() 関数は、出力バッファーに書き込まれたワイド文字の数を戻します。エラーが検出された場合は、終了ヌル・ワイド文字または負の値はカウントしません。 n 文字以上のワイド文字の書き込みが要求された場合、 負の値が戻されます。

この例では、ワイド文字 a をファイルに出力します。 印刷は vout() 関数から行われます。この関数は、可変数の引数を取り、 vfwprintf() を使用してそれらの引数をファイルに出力します。
#include <wchar.h>                                               
#include <stdarg.h>                                              
#include <locale.h>                                              
                                                                 
void vout (FILE *stream, wchar_t *fmt, ...);                     
                                                                 
const char ifs_path [] = "/tmp/myfile"; 
                                                                 
 int main(void)  {                                               
                                                                 
  FILE *stream;                                                  
  wchar_t format [] = L"%lc";                                     
                                                                 
  setlocale(LC_ALL, "POSIX");                                    
  if ((stream = fopen (ifs_path, "w")) == NULL) {                
    printf("Could not open file.\n");
    return (-1);
  }                                                              
  vout (stream, format, L'a');                                   
  fclose (stream);                                               
 
 /***********************************************                
    The contents of output file /tmp/myfile should                
    be a wide char 'a' which in the "POSIX" locale               
    is '0081'x.
 */                                              
 
  return (0);                                                            
    
                                                                 
 }                                                               
                                                                 
 void vout (FILE *stream, wchar_t *fmt, ...)                     
{                                                                
  va_list arg_ptr;                                               
   va_start (arg_ptr, fmt);                                      
   vfwprintf (stream, fmt, arg_ptr);
  va_end (arg_ptr); 
}                 

関連情報