vprintf 系関数
vprintf 系関数は、引数リストへのポインターを使用して、指定されたデータを書式化し、特定の出力先に書き込みます。 この関数は、実行されるパラメーターの検証、ワイド文字列またはシングル バイト文字列のどちらを受け取るか、出力先、および書式設定文字列でパラメーターを使用する順序を指定できるかどうかによって異なります。
解説
vprintf 系関数は、次の表に示す対応する関数に似ています。 ただし、vprintf 系関数は引数リストへのポインターを受け取りますが、対応する関数は引数リストを受け取ります。
これらの関数は、次のようにデータを書式化して出力先に書き込みます。
機能 |
対応する関数 |
出力先 |
パラメーターの検証 |
位置指定パラメーターのサポート |
---|---|---|---|---|
_vcprintf |
コンソール |
null 値の有無をチェックします。 |
no |
|
_vcwprintf |
コンソール |
null 値の有無をチェックします。 |
no |
|
vfprintf |
Stream |
null 値の有無をチェックします。 |
no |
|
vfprintf_p |
Stream |
null 値の有無および書式が有効かどうかをチェックします。 |
可 |
|
vfprintf_s |
Stream |
null 値の有無および書式が有効かどうかをチェックします。 |
no |
|
vfwprintf |
Stream |
null 値の有無をチェックします。 |
no |
|
vfwprintf_p |
Stream |
null 値の有無および書式が有効かどうかをチェックします。 |
可 |
|
vfwprintf_s |
Stream |
null 値の有無および書式が有効かどうかをチェックします。 |
no |
|
vprintf |
Stdout |
null 値の有無をチェックします。 |
no |
|
vprintf_p |
Stdout |
null 値の有無および書式が有効かどうかをチェックします。 |
可 |
|
vprintf_s |
Stdout |
null 値の有無および書式が有効かどうかをチェックします。 |
no |
|
vwprintf |
Stdout |
null 値の有無をチェックします。 |
no |
|
vwprintf_p |
Stdout |
null 値の有無および書式が有効かどうかをチェックします。 |
可 |
|
vwprintf_s |
Stdout |
null 値の有無および書式が有効かどうかをチェックします。 |
no |
|
vsprintf |
buffer で指定されたメモリ |
null 値の有無をチェックします。 |
no |
|
vsprintf_p |
buffer で指定されたメモリ |
null 値の有無および書式が有効かどうかをチェックします。 |
可 |
|
vsprintf_s |
buffer で指定されたメモリ |
null 値の有無および書式が有効かどうかをチェックします。 |
no |
|
vswprintf |
buffer で指定されたメモリ |
null 値の有無をチェックします。 |
no |
|
vswprintf_p |
buffer で指定されたメモリ |
null 値の有無および書式が有効かどうかをチェックします。 |
可 |
|
vswprintf_s |
buffer で指定されたメモリ |
null 値の有無および書式が有効かどうかをチェックします。 |
no |
|
_vscprintf |
buffer で指定されたメモリ |
null 値の有無をチェックします。 |
no |
|
_vscwprintf |
buffer で指定されたメモリ |
null 値の有無をチェックします。 |
no |
|
_vsnprintf |
buffer で指定されたメモリ |
null 値の有無をチェックします。 |
no |
|
_vsnwprintf |
buffer で指定されたメモリ |
null 値の有無をチェックします。 |
no |
引数 argptr は va_list 型であり、VARARGS.H および STDARG.H で定義されています。 変数 argptr は va_start で初期化しますが、後続の va_arg の呼び出しで再初期化できます。argptr は、引数 format 内の対応する指定に従って変換および送信される引数のリストの先頭を指します。 format の書式と機能は、printf の引数 format と同じです。 vprintf 系関数は、va_end を呼び出しません。 vprintf 系関数の詳細については、上の表に示された対応する関数の説明を参照してください。
vsprintf 関数とは異なり、_vsnprintf 関数が buffer に書き込むデータは count のバイト数以内です。
名前に w 挿入辞が付くこれらの関数は、w 挿入辞が付かない関数と対応しており、その対応する関数のワイド文字バージョンです。ワイド文字関数では、buffer と format はワイド文字列になります。 それ以外では、各ワイド文字関数の動作は、対応する 1 バイト文字セットの関数の動作と同じです。
_s サフィックスと _p サフィックスが付いている関数は、セキュリティが強化されたバージョンです。 このバージョンは、書式指定文字列を検証し、無効な書式指定文字が使用されているなど、文字列の書式が正しくない場合は例外を生成します。
_p サフィックスが付いているバージョンの関数では、提供されている引数を書式指定文字列で置き換える順序を指定できます。 詳細については、「printf_p の位置指定パラメーター」を参照してください。
vsprintf、vswprintf、_vsnprintf および _vsnwprintf 関数の場合、重なり合う文字列間でコピーした場合の動作は未定義です。
セキュリティに関するメモ |
---|
format がユーザー定義の文字列でないことを確認してください。 詳細については、「Avoiding Buffer Overruns」を参照してください。 _s サフィックスまたは _p サフィックスが付いているセキュリティが強化されたバージョンの関数を使用する場合、ユーザーが提供する文字列に無効な書式指定文字が含まれていると、例外が生成されます。 |
参照
参照
fprintf、_fprintf_l、fwprintf、_fwprintf_l
printf、_printf_l、wprintf、_wprintf_l