次の方法で共有


printf_p の位置指定パラメーター

位置指定パラメーターは引数の書式指定文字列のフィールドになる数値指定できます。位置指定パラメーターの printf の次の関数があります :

位置指定パラメーターの指定

bt7tawza.collapse_all(ja-jp,VS.110).gifインデックス パラメーター

既定では位置指定パラメーター関数は位置指定パラメーター書式指定がない場合位置をとの動作は同じです。位置指定パラメーターは書式指定文字列を指定する形式 %m$x 「」を参照して m がパラメーター リストのパラメーターの序数位置を示す数値を表示した場合指定されx は printf の関数で指定された型フィールド文字型を表示します。リストのパラメーターはリスト内の最初の要素のインデックス値 1 によって開始されます。型フィールド文字に関する詳細についてはprintf 関数の型フィールド文字 を参照してください。

この動作の例の場合 :

_printf_p("%1$s %2$s", "November", "10");

出力します。

November 10

使用した数値の順序が指定された引数の順序に一致させる必要はありません。したがって次に有効です :

_printf_p("%2$s %1$s", "November", "10");

出力します。

10 November

パラメーターは従来の書式指定文字列とは異なり書式設定間に複数回使用されている場合があります。

_printf_p("%{1$d times %1$d is %2$d", 10, 100);

出力します。

10 times 10 is 100

ただしすべての引数は書式指定文字列が少なくとも回場所を使用する必要があります。

書式指定文字列で使用される位置指定パラメーターの最大数は _ARGMAX で指定します。

bt7tawza.collapse_all(ja-jp,VS.110).gif幅と予知

* 幅または精度が引数から決定されるように指定するにはシンボルを使用して幅または予知の位置の値は * 記号の後に記述する必要があります。次に例を示します。

_printf_p("%1$*2$s","Hello", 10);

または

_printf_p("%2$*1$s",10, "Hello");

bt7tawza.collapse_all(ja-jp,VS.110).gif混合位置と非位置指定引数

位置指定パラメーターが同じ書式指定文字列は位置指定パラメーターが混合されていない可能性があります。ただしprintf_s および関連する機能は位置指定パラメーターを含まない書式指定文字列は位置指定パラメーターをサポートします。

使用例

// positional_args.c
// Positional arguments allow the specification of the order
// in which arguments are consumed in a formatting string.

#include <stdio.h>

int main(int argc, char *argv[])
{
    int     i = 1,
            j = 2,
            k = 3;
    double  x = 0.1,
            y = 0.2,
            z = 0.3;
    char    *s1 = "abc",
            *s2 = "def",
            *s3 = "ghi";

    // If positional arguments are unspecified,
    // normal input order is used.
    _printf_p("%d %d %d\n", i, j, k);

    // Positional args are numbers indicating the
    // argument enclosed in curly braces.
    _printf_p("%3$d %1$d %2$d\n", i, j, k);

    // The same positional argument may be reused.
    _printf_p("%1$d %2$d %1$d\n", i, j);

    _printf_p("%1$s %2$s %3$s\n", s1, s2, s3);

    _printf_p("%3$s %1$s %2$s\n", s1, s2, s3);
}
  

参照

関連項目

printf 関数の型フィールド文字

printf 関数の文字幅指定

精度指定