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átovacím řetězci.Následující poziční parametr printf k dispozici jsou funkce:

Poziční parametry určující

Parametr indexování

Ve výchozím nastavení funkce poziční chovaly stejně jako postavení než ty, pokud je přítomna žádná poziční formátování.Poziční parametry jsou zadány ve formátu "%m$x", kde m označuje číselnou pořadové číslo označující pozici parametru do seznamu parametrů, předchází řetězec formátu a x označuje typ pole znaků typu určeného v printf funkce.V seznamu parametry jsou indexovány počínaje hodnota 1 pro první prvek v seznamu a tak dále.Další informace o typu pole znaků, viz Znaky pole typu printf.

Příklad tohoto chování:

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

Vytiskne

November 10

Pořadí čísel použitých nemusí odpovídat pořadí argumentů uveden.Proto platí následující:

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

Vytiskne

10 November

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

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

Vytiskne

10 times 10 is 100

Nicméně 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.

Šířka a Prevision

Po * symbol slouží k určení, že šířku nebo přesnost se stanoví z argument, pak pozice 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");

Poziční argumenty podle pozice a bez míchání

Poziční parametry nesmí být smíchán s-poziční parametry ve stejném formátovacím řetězci. Nicméně printf_s a související funkce stále podporují-poziční parametry ve formátu řetězce obsahující parametry žádné pozice.

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

Znaky pole typu printf

Specifikace šířky printf

Specifikace přesnosti