_printf_p、_printf_p_l、_wprintf_p、_wprintf_p_l
更新 : 2007 年 11 月
書式付き出力を標準出力ストリームに出力します。その際、書式指定文字列で使用するパラメータの順序を指定できます。
int _printf_p(
const char *format [,
argument]...
);
int _printf_p_l(
const char *format,
locale_t locale [,
argument]...
);
int _wprintf_p(
const wchar_t *format [,
argument]...
);
int _wprintf_p_l(
const wchar_t *format,
locale_t locale [,
argument]...
);
パラメータ
format
書式指定文字列。argument
省略可能な引数。locale
使用するロケール。
戻り値
出力した文字数を返します。エラーが発生した場合は負の値を返します。
解説
_printf_p 関数は、一連の文字や値の書式を指定し、標準出力ストリーム stdout に出力します。format 文字列の後に引数を指定する場合は、format 文字列に引数の出力形式を指定する必要があります (「printf_p の位置指定パラメータ」を参照)。
_printf_p と printf_s の違いは、_printf_p では位置指定パラメータをサポートし、これによって、書式指定文字列で引数を使用する順序を指定できることです。詳細については、「printf_p の位置指定パラメータ」を参照してください。
_wprintf_p は _printf_p のワイド文字バージョンであり、ストリームが ANSI モードで開いている場合、これらの動作は同じです。現在 _printf_p では、UNICODE ストリームへの出力はサポートされていません。
_l サフィックスが付いているこれらの関数の各バージョンは、現在のスレッド ロケールの代わりに渡されたロケール パラメータを使用する点を除いて同じです。
セキュリティに関するメモ : |
---|
format にユーザー定義の文字列を指定しないでください。 |
format または argument が NULLの場合、あるいは書式指定文字列に無効な書式指定文字が含まれている場合、_printf_p と _wprintf_p 関数は「パラメータの検証」に説明されているように、無効なパラメータ ハンドラを呼び出します。実行の継続が許可された場合、関数は -1 を返し、errno を EINVAL に設定します。
汎用テキスト ルーチンのマップ
Tchar.h のルーチン |
_UNICODE および _MBCS が未定義の場合 |
_MBCS が定義されている場合 |
_UNICODE が定義されている場合 |
---|---|---|---|
_tprintf_p |
_printf_p |
_printf_p |
_wprintf_p |
_tprintf_p_l |
_printf_p_l |
_printf_p_l |
_wprintf_p_l |
必要条件
ルーチン |
必須ヘッダー |
---|---|
_printf_p, _printf_p_l |
<stdio.h> |
_wprintf_p, _wprintf_p_l |
<stdio.h> または <wchar.h> |
互換性の詳細については、「C ランタイム ライブラリ」の「互換性」を参照してください。
使用例
// crt_printf_p.c
// This program uses the _printf_p and _wprintf_p
// functions to choose the order in which parameters
// are used.
#include <stdio.h>
int main( void )
{
// Positional arguments
_printf_p( "Specifying the order: %2$s %3$s %1$s %4$s %5$s.\n",
"little", "I'm", "a", "tea", "pot");
// Resume arguments
_wprintf_p( L"Reusing arguments: %1$d %1$d %1$d %1$d\n", 10);
// Width argument
_printf_p("Width specifiers: %1$*2$s", "Hello\n", 10);
}
Specifying the order: I'm a little tea pot.
Reusing arguments: 10 10 10 10
Width specifiers: Hello
.NET Framework の相当するアイテム
参照
参照
_fprintf_p、_fprintf_p_l、_fwprintf_p、_fwprintf_p_l
fprintf、_fprintf_l、fwprintf、_fwprintf_l
fprintf_s、_fprintf_s_l、fwprintf_s、_fwprintf_s_l
scanf、_scanf_l、wscanf、_wscanf_l
scanf_s、_scanf_s_l、wscanf_s、_wscanf_s_l
_sprintf_p、_sprintf_p_l、_swprintf_p、_swprintf_p_l
sprintf、_sprintf_l、swprintf、_swprintf_l、__swprintf_l