vfprintf() — ストリームへの引数データの出力

形式

#include <stdarg.h>
#include <stdio.h>
int vfprintf(FILE *stream, const char *format, va_list arg_ptr);

言語レベル

ANSI

スレッド・セーフ

はい

ロケール依存

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

説明

vfprintf() 関数は、一連の文字と値をフォーマットし、出力 streamに書き込みます。 vfprintf() 関数は、 fprintf() 関数と同様に機能します。ただし、 arg_ptr は、プログラム内の呼び出しごとに番号が異なる可能性がある引数のリストを指します。 これらの引数は、呼び出しごとに va_start によって初期化する必要があります。 対照的に、 fprintf() 関数は引数のリストを持つことができますが、そのリスト内の引数の数は、プログラムのコンパイル時に固定されます。

vfprintf() 関数は、 format内の対応するフォーマット指定子に従って、引数リスト内の各エントリーを変換します。 format は、 printf() 関数の書式ストリングと同じ書式および機能を持ちます。

戻り値

正常に実行された場合、 vfprintf() は、 streamに書き込まれたバイト数を戻します。 エラーが発生した場合、関数は負の値を戻します。

この例は、ストリングの可変値をファイル myfile に出力します。
#include <stdarg.h>
#include <stdio.h>
 
void vout(FILE *stream, char *fmt, ...);
char fmt1 [] = "%s  %s  %s\n";
 
int main(void)
{
   FILE *stream;
   stream = fopen("mylib/myfile", "w");
 
   vout(stream, fmt1, "Sat", "Sun", "Mon");
}
 
void vout(FILE *stream, char *fmt, ...)
 
{
   va_list arg_ptr;
 
   va_start(arg_ptr, fmt);
   vfprintf(stream, fmt, arg_ptr);
   va_end(arg_ptr);
}
 
/******************  Output should be similar to:  ****************
 
Sat  Sun  Mon
*/

関連情報