Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Konumsal parametreler, biçim dizesindeki bir alana değiştirmek için bağımsız değişkeni numaralandırarak belirtmenize olanak sağlar. Aşağıdaki konumsal parametre printf işlevleri kullanılabilir:
Konumsal parametreleri belirtme
Parametre dizini oluşturma
Varsayılan olarak, konumsal biçimlendirme yoksa, konumsal işlevler konumsal olmayan işlevlerle aynı şekilde davranır. Biçim belirticinin başında kullanarak %n$ biçimlendirecek konum parametresini belirtirsiniz; burada n parametrenin parametre listesinde biçimlendirileceği konumdur. Parametre konumu, biçim dizesinden sonraki ilk bağımsız değişken için 1'de başlar. Biçim belirticisinin geri kalanı, biçim tanımlayıcısı ile printf aynı kuralları izler. Biçim tanımlayıcıları hakkında daha fazla bilgi için bkz . Biçim belirtimi söz dizimi: printf ve wprintf işlevleri.
Konumsal biçimlendirme örneği aşağıda verilmiştir:
_printf_p("%1$s %2$s", "November", "10");
Bu örnek şunu yazdırır:
November 10
Kullanılan sayıların sırasının bağımsız değişkenlerin sırasıyla eşleşmesi gerekmez. Örneğin, geçerli bir biçim dizesi:
_printf_p("%2$s %1$s", "November", "10");
Bu örnek şunu yazdırır:
10 November
Geleneksel biçim dizelerinden farklı olarak, konumsal parametreler bir biçim dizesinde birden çok kez kullanılabilir. Örneğin,
_printf_p("%1$d times %1$d is %2$d", 10, 100);
Bu örnek şunu yazdırır:
10 times 10 is 100
Tüm bağımsız değişkenler, biçim dizesinde en az bir kez kullanılmalıdır. Biçim dizesinde izin verilen en fazla konumsal parametre sayısı tarafından _ARGMAXverilir.
Genişlik ve duyarlık
Bir konumsal parametreyi genişlik veya duyarlık belirtici olarak belirtmek için kullanabilirsiniz *n$ ; burada n parametre listesindeki width veya precision parametresinin konumudur. Genişlik veya duyarlık değerinin konumu* simgesinin hemen ardından görünmelidir. Örneğin,
_printf_p("%1$*2$s","Hello", 10);
veya
_printf_p("%2$*1$s", 10, "Hello");
Konumsal ve konumsal olmayan bağımsız değişkenleri karıştırma
Konumsal parametreler aynı biçim dizesindeki konumsal olmayan parametrelerle karıştırılamayabilir. Herhangi bir konumsal biçimlendirme kullanılırsa, tüm biçim tanımlayıcıları konumsal biçimlendirme kullanmalıdır. Ancak ve ilgili işlevler, printf_p konumsal parametre içermeyen biçim dizelerinde konumsal olmayan parametreleri desteklemeye devam eder.
Örnek
// positional_args.c
// Build by using: cl /W4 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 i = 1,
j = 2,
k = 3;
double x = 0.1,
y = 2.22,
z = 333.3333;
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 arguments are numbers followed by a $ character.
_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);
// The positional arguments may appear in any order.
_printf_p("%1$s %2$s %3$s\n", s1, s2, s3);
_printf_p("%3$s %1$s %2$s\n", s1, s2, s3);
// Precision and width specifiers must be int types.
_printf_p("%3$*5$f %2$.*4$f %1$*4$.*5$f\n", x, y, z, j, k);
}
1 2 3
3 1 2
1 2 1
abc def ghi
ghi abc def
333.333300 2.22 0.100