Condividi tramite


parametri posizionali di printf_p

I parametri posizionali consentono di specificare il numero degli argomenti deve essere sostituito in un campo in una stringa di formato.Il parametro posizionale printf le funzioni sono disponibili:

specificare i parametri posizionali

bt7tawza.collapse_all(it-it,VS.110).gifRisoluzione di parametro

Per impostazione predefinita le funzioni posizionali si comportano in modo identico non nella posizione indicata da quelli, se non è necessaria alcuna formattazione posizionale presente.I parametri posizionali sono specificati mediante il formato “%m$x“, dove m indica un numero ordinale numerico che indica la posizione del parametro nell'elenco dei parametri, precedente la stringa di formato ex indica il tipo di carattere del campo del tipo specificato in printf funzione.I parametri nell'elenco sono avviare indicizzato al valore 1 al primo elemento nell'elenco e così via.Per informazioni aggiuntive rispetto ai caratteri di campo del tipo, vedere caratteri il campo tipo di printf.

per un esempio di questo comportamento:

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

verrà stampato

November 10

L'ordine dei numeri utilizzati non deve corrispondere a quello degli argomenti forniti.Pertanto l'esempio seguente è valido:

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

verrà stampato

10 November

Il parametro può essere utilizzato più volte durante la formattazione, a differenza delle stringhe di formato tradizionali, in modo che

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

verrà stampato

10 times 10 is 100

Tuttavia, tutti gli argomenti devono essere utilizzati almeno una volta nella stringa di formato.

Il numero massimo di parametri posizionali consentiti in una stringa di formato è fornito da l _ARGMAX.

bt7tawza.collapse_all(it-it,VS.110).gifLarghezza e prevedono

Quando il simbolo * viene utilizzato per specificare che la larghezza o la precisione proviene da determinare da un argomento, la posizione della larghezza o del valore di anteprima deve trovarsi immediatamente dopo il * il simbolo.Di seguito è riportato un esempio:

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

oppure

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

bt7tawza.collapse_all(it-it,VS.110).gifArgomenti posizionali e non posizionali combinare

I parametri posizionali non possono essere combinati con parametri non posizionali nella stessa stringa di formato.tuttavia, printf_s e le funzioni correlate ancora supportano i parametri non posizionali nelle stringhe di formato che non contengono parametri posizionali.

Esempio

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

Vedere anche

Riferimenti

caratteri il campo tipo di printf

specifica la larghezza di printf

Specifica di precisione