次の方法で共有


_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 サフィックスが付いているこれらの関数の各バージョンは、現在のスレッド ロケールの代わりに渡されたロケール パラメータを使用する点を除いて同じです。

s3a5ky4x.alert_security(ja-jp,VS.90).gifセキュリティに関するメモ :

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 の相当するアイテム

参照

参照

浮動小数点サポート

ストリーム入出力

ロケール

fopen、_wfopen

_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

sprintf_s、_sprintf_s_l、swprintf_s、_swprintf_s_l

vprintf 系関数