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
*/