vprintf() — 引数データの出力

フォーマット

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

言語レベル

ANSI

スレッド・セーフ

はい

ロケール依存

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

説明

vprintf() 関数は、一連の文字および値をフォーマット設定し、 stdout に出力します。vprintf() 関数は、printf() 関数と同様に機能しますが、arg_ptr はプログラムの呼び出しによって個数が異なることがある引数のリストを指しているという点が異なります。これらの引数は、 各呼び出しごとに va_start で初期化する必要があります。 反対に、printf() 関数は引数のリストを持てますが、 そのリストの引数の数はプログラムをコンパイルしたときに決定されます。

vprintf() 関数は、format 内の対応するフォーマット指定子に応じて、 引数リスト内の各項目を変換します。format には、 printf() 関数の書式ストリングと同じ書式および関数があります。

戻り値

正常に実行された場合、vprintf() 関数は stdout に書き込まれたバイト数を戻します。エラーが発生した場合、vprintf() 関数は 負の値を戻します。errno の値は、ETRUNC に設定することができます。

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