printf_p parâmetros posicional

A parâmetros posicionais fornecem a capacidade para especificar por número que deve ser substituído em um campo em uma seqüência de formato dos argumentos.O seguinte parâmetro posicional printf funções estão disponíveis:

Especificação de parâmetros posicional

bt7tawza.collapse_all(pt-br,VS.110).gifIndexação de parâmetro

Por padrão as posicionais funções se comportam forma idêntica para a posição que não aqueles que, se nenhuma formatação posicional estiver presente.Parâmetros de posição é especificada usando o formato "%m$x", onde m denota um número ordinal numérico, que indica a posição do parâmetro na lista de parâmetros, precedendo a seqüência de caracteres de formato e x indica o tipo de caractere do campo de tipo especificado na printf função.Os parâmetros na lista são indexados começando com o valor 1 para o primeiro elemento na lista e assim por diante.Para obter informações adicionais sobre os caracteres de campo de tipo, consulte printf caracteres de campo de tipo.

Para obter um exemplo desse comportamento:

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

serão impressas

November 10

A ordem dos números usados não precisa coincidir com a ordem dos argumentos fornecidos.Assim, o seguinte é válido:

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

serão impressas

10 November

Parâmetro pode ser usado mais de uma vez durante a formatação, ao contrário no tradicional Formatar seqüências de caracteres, então esse

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

serão impressas

10 times 10 is 100

No entanto, todos os argumentos devem ser usados pelo menos uma vez em algum lugar na seqüência de formato.

O número máximo de parâmetros posicionais permitido em uma seqüência de caracteres de formato é dado por _ARGMAX.

bt7tawza.collapse_all(pt-br,VS.110).gifLargura e Prevision

Quando o * símbolo é usado para especificar que a largura ou a precisão deve ser determinada a partir de um argumento e, em seguida, a posição do valor de largura ou prevision deve aparecer imediatamente seguinte a * símbolo.Por exemplo,

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

ou

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

bt7tawza.collapse_all(pt-br,VS.110).gifArgumentos posicionais posicionais e não de mixagem.

A parâmetros posicionais não podem ser misturada com os parâmetros posicionais na mesma seqüência de caracteres de formato.No entanto, printf_s e funções relacionadas ainda oferece suporte a parâmetros posicionais em seqüências de caracteres de formato não contendo nenhum parâmetro posicional.

Exemplo

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

Consulte também

Referência

printf caracteres de campo de tipo

printf especificação de largura

Especificação de precisão