Sdílet prostřednictvím


printf_p poziční parametry

Poziční parametry umožňují určit podle čísla, které argumenty nahrazuje do pole ve formátu řetězce.Následující poziční parametr printf funkce jsou k dispozici:

Poziční parametry určující

bt7tawza.collapse_all(cs-cz,VS.110).gifParametr indexování

Ve výchozím nastavení funkce poziční chovat stejně do polohy než ty, pokud není poziční formátování.Poziční parametry jsou uvedeny ve formátu "%m$x", kde m označuje číselné pořadové číslo označující pozici parametr v seznamu parametrů, předchází řetězec formátu a x označuje typ znak pole Typ zadaný v printf funkce.V seznamu parametry jsou indexovány počínaje první prvek v seznamu hodnotu 1 a tak dále.Další informace týkající se znaky pole Typ, printf znaky pole Typ.

Příklad tohoto chování:

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

Tisknout

November 10

Pořadí čísel použitých třeba neodpovídá pořadí argumentů uveden.Proto platí následující:

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

Tisknout

10 November

Parametr může být použit více než jednou během formátování, na rozdíl od v tradiční formátování řetězců, tak že

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

Tisknout

10 times 10 is 100

Však všechny argumenty musí použít alespoň jednou někde ve formátovacím řetězci.

Maximální počet poziční parametry, které jsou povoleny ve formátovacím řetězci je dána _ARGMAX.

bt7tawza.collapse_all(cs-cz,VS.110).gifŠířka a Prevision

Když * symbol se používá k určení šířky nebo přesnost je stanovit z argument, pak umístění hodnoty šířky nebo prevision musí být uvedena bezprostředně následující * symbol.Příklad:

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

nebo

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

bt7tawza.collapse_all(cs-cz,VS.110).gifMíchání poziční a bez argumentů umístění.

Poziční parametry nesmí být smíchána s parametry poziční stejný formát řetězce.Však printf_s a souvisejících funkcí ve formátu řetězce obsahující žádné poziční parametry stále podporují-poziční parametry.

Příklad

// 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);
}
  

Viz také

Referenční dokumentace

printf znaky pole Typ

Šířka specifikace printf

Přesné specifikace.