paramètres positionnels de printf_p

Les paramètres positionnels permettent de spécifier par le numéro qui des arguments doit être substituée dans un champ dans une chaîne de format.les fonctions suivantes d' printf de paramètre positionnel sont disponibles :

Spécifier les paramètres positionnels

bt7tawza.collapse_all(fr-fr,VS.110).gifindexation de paramètre

Par défaut les fonctions de position se comportent de la même façon non à la position ces derniers, si aucune mise en forme de position n'est présent.Les paramètres positionnels sont spécifiés à l'aide de le format « %m$x », où m désigne un nombre ordinal numérique indiquant la position du paramètre dans la liste de paramètres, avant la chaîne de format etx indique le type de caractère de champ de type spécifié dans la fonction d' printf .Les paramètres de la liste sont démarrer indexé à la valeur 1 pour le premier élément de la liste etc.Pour des informations supplémentaires concernant les caractères de champ de type, consultez type de caractères printf de champ.

Pour obtenir un exemple de ce comportement :

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

sera imprimé dans sa

November 10

L'ordre des nombres utilisés n'a pas besoin de correspondre à celui des arguments donnés.Ce qui suit est valide :

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

sera imprimé dans sa

10 November

Le paramètre peut être utilisé plusieurs fois pour la mise en forme, contrairement à les chaînes de format traditionnelles, afin que

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

sera imprimé dans sa

10 times 10 is 100

Toutefois, tous les arguments doivent être utilisés au moins une fois en cours dans la chaîne de format.

Le nombre maximal de paramètres positionnels autorisés dans une chaîne de format est fourni par _ARGMAX.

bt7tawza.collapse_all(fr-fr,VS.110).gifLargeur et prévue

Lorsque le symbole * est utilisé pour spécifier que la largeur ou la précision doit être déterminée d'un argument, la position de la largeur ou de la valeur de prévue doit apparaître immédiatement après le symbole *.Par exemple :

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

ou

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

bt7tawza.collapse_all(fr-fr,VS.110).gifCombinaison de position et non arguments de position

Les paramètres positionnels ne peuvent être associés aux paramètres non position dans la même chaîne de format.Toutefois, printf_s et les fonctions liées prennent en charge toujours des paramètres non position dans les chaînes de format ne contenant pas de paramètre positionnel.

Exemple

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

Voir aussi

Référence

type de caractères printf de champ

spécification de la largeur de printf

Spécification de précision