vprintf 関数

vprintf の各関数は引数リストへのポインターを受け取り、指定されたデータを書式設定して特定の出力先に書き込みます。 関数は、いくつかの方法で異なります。パラメーターの検証では、関数が 1 バイトまたはワイドの文字列を受け取るかどうか、出力先、および順序パラメーターを指定するためのサポートが書式指定文字列で使用されます。

_vcprintf, _vcwprintf
vfprintf, vfwprintf
_vfprintf_p, _vfprintf_p_l, _vfwprintf_p, _vfwprintf_p_l
vfprintf_s, _vfprintf_s_l, vfwprintf_s, _vfwprintf_s_l
vprintf, vwprintf
_vprintf_p, _vprintf_p_l, _vwprintf_p, _vwprintf_p_l
vprintf_s, _vprintf_s_l, vwprintf_s, _vwprintf_s_l
_vscprintf, _vscprintf_l, _vscwprintf, _vscwprintf_l
_vsnprintf, _vsnwprintfvsprintf, vswprintf
_vsprintf_p, _vsprintf_p_l, _vswprintf_p, _vswprintf_p_l
vsprintf_s, _vsprintf_s_l, vswprintf_s, _vswprintf_s_l

解説

vprintf の各関数は、次の表にまとめたとおり、対応する関数に似ています。 ただし、vprintf の各関数は引数リストへのポインターを受け取るのに対し、対応する各関数は引数リストを受け取ります。

次のように、これらの関数はデータを書式設定して出力先に書き込みます。

機能 対応する関数 出力先 パラメーターの検証 位置指定パラメーターのサポート
_vcprintf _cprintf console Null を確認します。 いいえ
_vcwprintf _cwprintf console Null を確認します。 いいえ
vfprintf fprintf stream Null を確認します。 いいえ
vfprintf_p fprintf_p stream Null と有効な書式を確認します。 はい
vfprintf_s fprintf_s stream Null と有効な書式を確認します。 いいえ
vfwprintf fwprintf stream Null を確認します。 いいえ
vfwprintf_p fwprintf_p stream Null と有効な書式を確認します。 はい
vfwprintf_s fwprintf_s stream Null と有効な書式を確認します。 いいえ
vprintf printf stdout Null を確認します。 いいえ
vprintf_p printf_p stdout Null と有効な書式を確認します。 はい
vprintf_s printf_s stdout Null と有効な書式を確認します。 いいえ
vwprintf wprintf stdout Null を確認します。 いいえ
vwprintf_p wprintf_p stdout Null と有効な書式を確認します。 はい
vwprintf_s wprintf_s stdout Null と有効な書式を確認します。 いいえ
vsprintf sprintf によって指されるメモリ buffer Null を確認します。 いいえ
vsprintf_p sprintf_p によって指されるメモリ buffer Null と有効な書式を確認します。 はい
vsprintf_s sprintf_s によって指されるメモリ buffer Null と有効な書式を確認します。 いいえ
vswprintf swprintf によって指されるメモリ buffer Null を確認します。 いいえ
vswprintf_p swprintf_p によって指されるメモリ buffer Null と有効な書式を確認します。 はい
vswprintf_s swprintf_s によって指されるメモリ buffer Null と有効な書式を確認します。 いいえ
_vscprintf _vscprintf によって指されるメモリ buffer Null を確認します。 いいえ
_vscwprintf _vscwprintf によって指されるメモリ buffer Null を確認します。 いいえ
_vsnprintf _snprintf によって指されるメモリ buffer Null を確認します。 いいえ
_vsnwprintf _snwprintf によって指されるメモリ buffer Null を確認します。 いいえ

引数 argptr は、VARARGS.H と STDARG.H で定義される va_list 型を持ちます。 変数は argptr 、va_startによって 初期化する必要があり、 後続 va_arg の呼び出し argptr によって再初期化される可能性があります。次に、変換され、引数内の対応する仕様に従って出力用に送信される引数のリストの先頭を format 指します。 format の引数と同じ形式と関数を formatprintfっています。 これらの関数のいずれも呼び出しません va_end。 各 vprintf 関数の詳細については、上の表にある対応する関数の説明をご覧ください。

_vsnprintfは、書き込みバイトbuffer数以下countであるという点でvsprintf異なります。

名前に w のインフィックスが付いたこれらの関数のバージョンは、w インフィックスのない対応する関数のワイド文字バージョンです。これらのワイド文字関数のそれぞれでは、 bufferformatワイド文字文字列です。 それ以外のワイド文字の各関数は SBCS の対応する関数と全く同じ動作をします。

これらの関数のバージョンと_s_pサフィックスは、より安全なバージョンです。 これらのバージョンでは、書式指定文字列が検証されます。 書式指定文字列が整形式でない場合 (たとえば、無効な書式設定文字が使用されている場合) は例外が生成されます。

サフィックスを持つ _p これらの関数のバージョンを使用すると、指定された引数が書式指定文字列で置き換えられる順序を指定できます。 詳細については、「printf_p の位置指定パラメーター」をご覧ください。

vsprintfvswprintf場合、_vsnprintfおよび_vsnwprintf、重複する文字列間でコピーが行われる場合、動作は未定義です。

重要

format にユーザー定義の文字列を指定しないでください。 詳細については、「バッファー オーバーランの回避」を参照してください。 これらの関数のセキュリティで保護されたバージョン (サフィックス) _s_p を使用している場合、ユーザー指定の書式指定文字列に無効な書式設定文字が含まれている場合、ユーザー指定の書式指定文字列によって無効なパラメーター例外がトリガーされる可能性があります。

関連項目

ストリーム入出力
fprintf, _fprintf_l, fwprintf, _fwprintf_l
printf, _printf_l, wprintf, _wprintf_l
sprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l
va_arg, va_copy, va_end, va_start