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:
printf, _printf_l, wprintf, _wprintf_l
_printf_p, _printf_p_l, _wprintf_p, _wprintf_p_lsprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l
_sprintf_p, _sprintf_p_l, _swprintf_p, _swprintf_p_l_cprintf, _cprintf_l, _cwprintf, _cwprintf_l
_cprintf_p, _cprintf_p_l, _cwprintf_p, _cwprintf_p_lfprintf, _fprintf_l, fwprintf, _fwprintf_l
_fprintf_p, _fprintf_p_l, _fwprintf_p, _fwprintf_p_lvprintf, _vprintf_l, vwprintf, _vwprintf_l
_vprintf_p, _vprintf_p_l, _vwprintf_p, _vwprintf_p_lvfprintf, _vfprintf_l, vfwprintf, _vfwprintf_l
_vfprintf_p, _vfprintf_p_l, _vfwprintf_p, _vfwprintf_p_lvsprintf, _vsprintf_l, vswprintf, _vswprintf_l, __vswprintf_l
_vsprintf_p, _vsprintf_p_l, _vswprintf_p, _vswprintf_p_l
specificare i parametri posizionali
Risoluzione 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.
Larghezza 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");
Argomenti 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