printf_p Konumsal Parametreler
Konumsal Parametreler olan bağımsız bir alana biçim dizesi atanması numarasına göre belirtme olanağı sağlar.Aşağıdaki Konumsal parametre printf işlevleri kullanılabilir:
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
Konumsal Parametreler belirtme
Parametre dizin oluşturma
Konumsal biçimlendirmesi içermeyen varsa, varsayılan olarak Konumsal işlev olmayan pozisyon olanları özdeş olarak davranır.Konumsal Parametreler biçiminde belirtilir "%m$x", nerede m parametresi önceki biçim dizesi parametreleri, listedeki konumunu gösteren bir sayısal sıra numarası gösterir ve x belirtilen türü alanı karakter türünü gösterir printf işlevi.Parametre listesinde, listedeki ilk öğe 1 değerini vb. başlayarak dizine alınır.Tür alanı karakterleri ile ilgili ek bilgi için bkz: printf alan karakterleri yazın.
Bu davranış, örneğin:
_printf_p("%1$s %2$s", "November", "10");
yazdırır
November 10
Kullanılan numaralar sırasını verilen değişkenlerin sırası aynı değil.Böylece aşağıdaki geçerli olur:
_printf_p("%2$s %1$s", "November", "10");
yazdırır
10 November
Parametre kullanılır ve birden fazla kez biçimlendirirken, aksine, geleneksel biçimlendirme dizeleri, bu nedenle söz konusu
_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 değişkenler en az bir kez bir yerde biçim dizesi kullanılmalıdır.
Konumsal parametreler bir biçim dizesi için izin verilen en fazla sayısı tarafından verilen _ARGMAX.
Genişlik ve Prevision
Zaman * simgesi genişliği veya precision bir değişkenden belirlenmesi için olduğunu belirtmek için kullanılır, daha sonra genişlik veya prevision değerin konumunu hemen arkasından görünür * simgesi.Örnek:
_printf_p("%1$*2$s","Hello", 10);
or
_printf_p("%2$*1$s",10, "Hello");
Konumsal ve olmayan Konumsal bağımsız karıştırma
Konumsal Parametreler Konumsal olmayan aynı biçim dizesi parametrelerinde ile karışabilir.Ancak, printf_s ve ilgili işlevler Konumsal parametre içeren biçim dizeleri hala Konumsal olmayan parametreleri destekler.
Ö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);
}