vprintf 関数

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

_vcprintf, _vcwprintf
vfprintf, vfwprintf
_vfprintf_p_vfprintf_p_l_vfwprintf_p_vfwprintf_p_l
vfprintf_s_vfprintf_s_lvfwprintf_s_vfwprintf_s_l
vprintf, vwprintf
_vprintf_p_vprintf_p_l_vwprintf_p_vwprintf_p_l
vprintf_s_vprintf_s_lvwprintf_s_vwprintf_s_l
_vscprintf_vscprintf_l_vscwprintf_vscwprintf_l
_vsnprintf_vsnwprintfvsprintfvswprintf
_vsprintf_p_vsprintf_p_l_vswprintf_p_vswprintf_p_l
vsprintf_s_vsprintf_s_lvswprintf_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には、printfformat引数と同じ形式と機能があります。 これらの関数のいずれも va_endを呼び出しません。 各 vprintf 関数の詳細については、上の表にある対応する関数の説明をご覧ください。

_vsnprintfは、buffercountバイト以下を書き込むという点で、vsprintfとは異なります。

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

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

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

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

重要

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

関連項目

ストリーム入出力
fprintf_fprintf_lfwprintf_fwprintf_l
printf_printf_lwprintf_wprintf_l
sprintf_sprintf_lswprintf_swprintf_l__swprintf_l
va_argva_copyva_endva_start