vprintf 系関数vprintf Functions

vprintf の各関数は引数リストへのポインターを受け取り、指定されたデータを書式設定して特定の出力先に書き込みます。Each of the vprintf functions takes a pointer to an argument list, then formats and writes the given data to a particular destination. 各関数のパラメーターの検証内容は、ワイド文字列と 1 バイト文字列のどちらを使用するか、出力先がどこか、書式設定文字列でのパラメーターの使用順序を指定できるか、などの点が異なります。The functions differ in the parameter validation performed, whether the functions take wide or single-byte character strings, the output destination, and the support for specifying the order in which parameters are used in the format string.

_vcprintf、_vcwprintf_vcprintf, _vcwprintf vfprintf、vfwprintfvfprintf, vfwprintf
_vfprintf_p、_vfprintf_p_l、_vfwprintf_p、_vfwprintf_p_l_vfprintf_p, _vfprintf_p_l, _vfwprintf_p, _vfwprintf_p_l vfprintf_s、_vfprintf_s_l、vfwprintf_s、_vfwprintf_s_lvfprintf_s, _vfprintf_s_l, vfwprintf_s, _vfwprintf_s_l
vprintf、vwprintfvprintf, vwprintf _vprintf_p、_vprintf_p_l、_vwprintf_p、_vwprintf_p_l_vprintf_p, _vprintf_p_l, _vwprintf_p, _vwprintf_p_l
vprintf_s、_vprintf_s_l、vwprintf_s、_vwprintf_s_lvprintf_s, _vprintf_s_l, vwprintf_s, _vwprintf_s_l vsprintf、vswprintfvsprintf, vswprintf
_vsprintf_p、_vsprintf_p_l、_vswprintf_p、_vswprintf_p_l_vsprintf_p, _vsprintf_p_l, _vswprintf_p, _vswprintf_p_l vsprintf_s、_vsprintf_s_l、vswprintf_s、_vswprintf_s_lvsprintf_s, _vsprintf_s_l, vswprintf_s, _vswprintf_s_l
_vscprintf、_vscprintf_l、_vscwprintf、_vscwprintf_l_vscprintf, _vscprintf_l, _vscwprintf, _vscwprintf_l _vsnprintf、_vsnwprintf_vsnprintf, _vsnwprintf

解説Remarks

vprintf の各関数は、次の表にまとめたとおり、対応する関数に似ています。The vprintf functions are similar to their counterpart functions as listed in the following table. ただし、vprintf の各関数は引数リストへのポインターを受け取るのに対し、対応する各関数は引数リストを受け取ります。However, each vprintf function accepts a pointer to an argument list, whereas each of the counterpart functions accepts an argument list.

次のように、これらの関数はデータを書式設定して出力先に書き込みます。These functions format data for output to destinations as follows.

関数Function 対応する関数Counterpart function 出力先Output destination パラメーターの検証Parameter Validation 位置指定パラメーターのサポートPositional Parameter Support
_vcprintf _cprintf_cprintf コンソールconsole Null を確認します。Check for null. no
_vcwprintf _cwprintf_cwprintf コンソールconsole Null を確認します。Check for null. no
vfprintf fprintffprintf ストリームStream Null を確認します。Check for null. no
vfprintf_pvfprintf_p fprintf_pfprintf_p ストリームStream Null と有効な書式を確認します。Check for null and valid format. yes
vfprintf_s fprintf_sfprintf_s ストリームStream Null と有効な書式を確認します。Check for null and valid format. no
vfwprintf fwprintffwprintf ストリームStream Null を確認します。Check for null. no
vfwprintf_pvfwprintf_p fwprintf_pfwprintf_p ストリームStream Null と有効な書式を確認します。Check for null and valid format. yes
vfwprintf_s fwprintf_sfwprintf_s ストリームStream Null と有効な書式を確認します。Check for null and valid format. no
vprintf printfprintf Stdout Null を確認します。Check for null. no
vprintf_pvprintf_p printf_pprintf_p Stdout Null と有効な書式を確認します。Check for null and valid format. yes
vprintf_s printf_sprintf_s Stdout Null と有効な書式を確認します。Check for null and valid format. no
vwprintf wprintfwprintf Stdout Null を確認します。Check for null. nono
vwprintf_pvwprintf_p wprintf_pwprintf_p Stdout Null と有効な書式を確認します。Check for null and valid format. yes
vwprintf_s wprintf_swprintf_s Stdout Null と有効な書式を確認します。Check for null and valid format. no
vsprintfvsprintf sprintfsprintf バッファーによって指し示されるメモリmemory pointed to by buffer Null を確認します。Check for null. no
vsprintf_pvsprintf_p sprintf_psprintf_p バッファーによって指し示されるメモリmemory pointed to by buffer Null と有効な書式を確認します。Check for null and valid format. yes
vsprintf_s sprintf_ssprintf_s バッファーによって指し示されるメモリmemory pointed to by buffer Null と有効な書式を確認します。Check for null and valid format. no
vswprintf swprintfswprintf バッファーによって指し示されるメモリmemory pointed to by buffer Null を確認します。Check for null. no
vswprintf_pvswprintf_p swprintf_pswprintf_p バッファーによって指し示されるメモリmemory pointed to by buffer Null と有効な書式を確認します。Check for null and valid format. yes
vswprintf_s swprintf_sswprintf_s バッファーによって指し示されるメモリmemory pointed to by buffer Null と有効な書式を確認します。Check for null and valid format. no
_vscprintf _vscprintf_vscprintf バッファーによって指し示されるメモリmemory pointed to by buffer Null を確認します。Check for null. no
_vscwprintf _vscwprintf_vscwprintf バッファーによって指し示されるメモリmemory pointed to by buffer Null を確認します。Check for null. no
_vsnprintf _snprintf_snprintf バッファーによって指し示されるメモリmemory pointed to by buffer Null を確認します。Check for null. no
_vsnwprintf _snwprintf_snwprintf バッファーによって指し示されるメモリmemory pointed to by buffer Null を確認します。Check for null. no

引数 argptr は、VARARGS.H と STDARG.H で定義される va_list 型を持ちます。The argptr argument has type va_list, which is defined in VARARGS.H and STDARG.H. 変数 argptrva_start によって初期化される必要があり、後続の va_arg の呼び出しによって再初期化される必要があります。次に、argptr は引数 format の対応する仕様に従って出力用に変換および転送される引数リストの先頭を指し示します。The argptr variable must be initialized by va_start, and may be reinitialized by subsequent va_arg calls; argptr then points to the beginning of a list of arguments that are converted and transmitted for output according to the corresponding specifications in the format argument. format は、printf の引数 format と同じ書式と関数を持ちます。format has the same form and function as the format argument for printf. これらの関数は、va_end を呼び出しません。None of these functions invokes va_end. vprintf 関数の詳細については、上の表にある対応する関数の説明をご覧ください。For a more complete description of each vprintf function, see the description of its counterpart function as listed in the preceding table.

_vsnprintfvsprintf とは異なり、vsprintf 内でわずか count バイトをバッファーに書き込むだけです。_vsnprintf differs from vsprintf in that it writes no more than count bytes to buffer.

名前に挿入辞 w を持つバージョンのこれらの関数は、挿入辞 w を持たない関数と対応関係にあるワイド文字バージョンの関数です。これらのワイド文字の各関数では、バッファーformat がワイド文字列になります。The versions of these functions with the w infix in the name are wide-character versions of the corresponding functions without the w infix; in each of these wide-character functions, buffer and format are wide-character strings. それ以外のワイド文字の各関数は SBCS の対応する関数と全く同じ動作をします。Otherwise, each wide-character function behaves identically to its SBCS counterpart function.

サフィックス _s_p を持つこれらの関数のバージョンは、セキュリティが強化されたバージョンです。The versions of these functions with _s and _p suffixes are the more secure versions. これらのバージョンでは、書式設定文字列を検証し、書式設定文字列が整形式ではない場合 (たとえば、無効な書式設定文字が使用されている場合) に例外が発生します。These versions validate the format strings and will generate an exception if the format string is not well formed (for example, if invalid formatting characters are used).

サフィックス _p を持つこれらの関数のバージョンによって、書式設定文字列内での指定された引数の置き換え順序を指定できます。The versions of these functions with the _p suffix provide the ability to specify the order in which the supplied arguments are substituted in the format string. 詳細については、「printf_p の位置指定パラメーター」をご覧ください。For more information, see printf_p Positional Parameters.

vsprintfvswprintf_vsnprintf、および _vsnwprintf については、重なり合う文字列間でコピーした場合の動作は未定義です。For vsprintf, vswprintf, _vsnprintf and _vsnwprintf, if copying occurs between strings that overlap, the behavior is undefined.

重要

format にユーザー定義の文字列を指定しないでください。Ensure that format is not a user-defined string. 詳しくは、「 バッファー オーバーランの回避」をご覧ください。For more information, see Avoiding Buffer Overruns. これらの関数 (サフィックス _s または _p のどちらか) のセキュリティが強化されたバージョンを使用する場合、ユーザー指定の書式設定文字列は、ユーザー指定文字列に無効な書式設定文字が含まれている場合に無効なパラメーター例外をトリガーします。If using the secure versions of these functions (either the _s or _p suffixes), a user-supplied format string could trigger an invalid parameter exception if the user-supplied string contains invalid formatting characters.

関連項目See also

ストリーム入出力Stream I/O
fprintf、_fprintf_l、fwprintf、_fwprintf_lfprintf, _fprintf_l, fwprintf, _fwprintf_l
printf、_printf_l、wprintf、_wprintf_lprintf, _printf_l, wprintf, _wprintf_l
sprintf、_sprintf_l、swprintf、_swprintf_l、__swprintf_lsprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l
va_arg、va_copy、va_end、va_startva_arg, va_copy, va_end, va_start