printf_p Konumsal Parametreler

Konumsal parametre olan bağımsız bir biçim dizesi alanına değiştirilecek numarasına göre belirleme olanağı sağlar.Aşağıdaki konum parametresi printf işlevleri kullanılabilir:

Konumsal parametrelerini belirtme

Parametre dizin oluşturma

Konumsal bir biçimlendirme yok varsa, varsayılan olarak Konumsal işlev olmayan bir konuma olanlar, aynı şekilde davranır.Konumsal parametre biçimi kullanılarak belirtilir "%m$x" burada m parametre önceki biçim dizesi parametreleri listesindeki konumunu gösteren sayısal bir sıralı sayı gösterir ve x belirtilen alan karakter türü gösterir printf işlev.Parametre listesinde, listedeki ilk öğe 1 değerini vb. başlayarak dizine eklenir.Tür alanı karakterleri ile ilgili ek bilgi için bkz: printf Türü Alan Karakterleri.

Bu davranış, örneğin:

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

yazdırır

November 10

Kullanılan numaralar sırasını verilen bağımsız eşleşmesi değil.Bu nedenle geçerli aşağıdadır:

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

yazdırır

10 November

Parametre kullanılır ve birden çok kez biçimlendirirken, aksine geleneksel olarak biçimlendirme dizeleri, böylece o

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

yazdırır

10 times 10 is 100

Ancak, tüm bağımsız bir yerde en az bir kez Biçim dizesinde kullanılmalıdır.

Konumsal parametre bir biçim dizesi için izin verilen en fazla sayısını tarafından verilen _ARGMAX.

Genişlik ve Prevision

Zaman * sembol genişlik veya duyarlık argüman belirlenecek olduğunu belirtmek için kullanılır, daha sonra genişlik veya prevision değerin konumunu hemen aşağıdaki görünmelidir, aksi halde * simgesi.Örnek:

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

veya

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

Karıştırma konumsal ve olmayan konumsal bağımsız değişkenleri

Konumsal parametre konumsal olmayan aynı biçim dizesi parametrelerinde ile karışabilir. Ancak, printf_s ve ilgili işlevlerin desteklemeye devam konumsal olmayan parametreler konumsal parametre içeren biçim dizeleri.

Örnek

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

Ayrıca bkz.

Başvuru

printf Türü Alan Karakterleri

printf Genişlik Belirtimi

Duyarlık Belirtimleri