次の方法で共有


_vprintf_p_vprintf_p_l_vwprintf_p_vwprintf_p_l

引数リストへのポインターを使用して、書式付き出力を書き込みます。その際、引数を使用する順序を指定できます。

構文

int _vprintf_p(
   const char *format,
   va_list argptr
);
int _vprintf_p_l(
   const char *format,
   _locale_t locale,
   va_list argptr
);
int _vwprintf_p(
   const wchar_t *format,
   va_list argptr
);
int _vwprintf_p_l(
   const wchar_t *format,
   _locale_t locale,
   va_list argptr
);

パラメーター

format
書式の指定。

argptr
引数リストへのポインター。

locale
使用するロケール。

詳細については、「書式指定構文」を参照してください。

戻り値

_vprintf_p 関数と _vwprintf_p 関数は、書き込まれた文字数を返します。終端の null 文字は含まれません。出力エラーが発生した場合は、負の値を返します。

解説

これらの関数は、引数リストへのポインターを使用して、指定されたデータを書式化して stdout に書き込みます。 これらの関数は、引数を使用する順序を指定できることを除いて vprintf_svwprintf_s と同じです。 詳細については、「printf_p の位置指定パラメーター」をご覧ください。

_vwprintf_p_vprintf_p のワイド文字バージョンであり、ストリームが ANSI モードで開いている場合、この 2 つの関数の動作は同じです。 _vprintf_p では、UNICODE ストリームへの出力はサポートされていません。

これらの関数のうち _l サフィックスが付けられたバージョンは、現在のスレッド ロケールの代わりに渡されたロケール パラメーターを使用する点を除いて同じです。

重要

format にユーザー定義の文字列を指定しないでください。 詳細については、「バッファー オーバーランの回避」を参照してください。 Windows 10 バージョン 2004 (ビルド 19041) 以降の printf ファミリの関数では、丸め処理の IEEE 754 の規則に従って、正確に表現可能な浮動小数点数が出力されます。 以前のバージョンの Windows では、"5" で終わる正確に表現可能な浮動小数点数は常に切り上げられていました。 IEEE 754 では、最も近い偶数に丸める ("銀行型丸め" とも呼ばれます) 必要があることが示されています。 たとえば、printf("%1.0f", 1.5)printf("%1.0f", 2.5) の両方を 2 に丸める必要があります。 以前は、1.5 は 2 に、2.5 は 3 に丸められていました。 この変更は、正確に表現可能な数値にのみ影響します。 たとえば、2.35 (メモリで表される場合は 2.35000000000000008 に近い) は、2.4 に切り上げられます。 これらの関数によって実行される丸め処理では、fesetround によって設定された浮動小数点丸めモードにも従うようになりました。 以前は、丸め処理には常に FE_TONEAREST の動作が選択されていました。 この変更は、Visual Studio 2019 バージョン 16.2 以降を使用してビルドされたプログラムにのみ影響します。 従来の浮動小数点丸め動作を使用するには、'legacy_stdio_float_rounding.obj' にリンクします。

formatが null ポインターの場合、または書式指定文字列に無効な書式設定文字が含まれている場合は、「パラメーターの検証で説明されているように、無効なパラメーター ハンドラーが呼び出されます。 実行の継続が許可された場合、関数は -1 を返し、errnoEINVAL に設定します。

汎用テキスト ルーチンのマップ

TCHAR.H のルーチン _UNICODE_MBCS が定義されていない _MBCS が定義されている _UNICODE が定義されている
_vtprintf_p _vprintf_p _vprintf_p _vwprintf_p
_vtprintf_p_l _vprintf_p_l _vprintf_p_l _vwprintf_p_l

要件

ルーチンによって返される値 必須ヘッダー 省略可能なヘッダー
_vprintf_p, _vprintf_p_l <stdio.h> および <stdarg.h> <varargs.h>*
_vwprintf_p, _vwprintf_p_l <stdio.h> または <wchar.h>、および <stdarg.h> <varargs.h>*

* UNIX V の互換性のために必要です。

ユニバーサル Windows プラットフォーム (UWP) アプリではコンソールがサポートされていません。 コンソール (stdinstdoutstderr) に関連付けられている標準ストリームのハンドルは、C ランタイム関数によって UWP アプリで使用される前に、リダイレクトする必要があります。 互換性の詳細については、「 Compatibility」を参照してください。

関連項目

ストリーム入出力
vprintf 関数
_fprintf_p_fprintf_p_l_fwprintf_p_fwprintf_p_l
_printf_p_printf_p_l_wprintf_p_wprintf_p_l
_sprintf_p_sprintf_p_l_swprintf_p_swprintf_p_l
vsprintf_s_vsprintf_s_lvswprintf_s_vswprintf_s_l
va_argva_copyva_endva_start
_vfprintf_p_vfprintf_p_l_vfwprintf_p_vfwprintf_p_l
_printf_p_printf_p_l_wprintf_p_wprintf_p_l
printf_p の位置指定パラメーター