Dönüşüm Belirteci Seçenekleri
Önceki printf İşlevinin Özelleştirilmesi Sonraki
Dönüşüm Belirteci Seçenekleri
Bir dönüşüm belirteci olarak %A tanımladınız diyelim, bir şablon örneğin, %+23A veya %-#A içeriyorsa ne olacak? Dönüşüm belirteçleri ile birlikte verilen seçenekleri tanımlayacağınız bir yapı olabilir.
Hem kotarıcı-işlev hem de argtürleri-işlevi bir dönüşüm belirtecinde görülen seçenekler hakkında bilgi içeren bir struct printf_info yapısına gösterici alır. Bu veri türü printf.h başlık dosyasında bildirilmiştir.
struct printf_info
veri türü
Bu yapı bir şablon dizgesindeki dönüşüm belirteçleri için kullanılan argüman türleri ve sayıları hakkında bilgi veren ve bu belirteçleri çıktılayan işlevlere bilgi aktarmak için kullanılır. Yapı üyeleri şunlardır:
int prec
Belirtilen hassasiyettir. Hassasiyet belirtilmemişse değeri -1’dir. Hassasiyet * olarak verilmişse, kotarıcı işleve aktarılan printf_info yapısı argüman listesinden alınan değeri içerir. Ancak argüman türleri ve sayısı için bilgi veren işleve aktarılan yapı, değer bilinmediğinden bir INT_MIN değeri içerir.
int width
Belirtilen en küçük alan genişliğidir. 0 değeri bir genişlik belirtilmediği anlamına gelir. Alan genişliği * olarak verilmişse, kotarıcı işleve aktarılan printf_info yapısı argüman listesinden alınan değeri içerir. Ancak argüman türleri ve sayısı için bilgi veren işleve aktarılan yapı, değer bilinmediğinden bir INT_MIN değeri içerir.
wchar_t spec
Belirtilen dönüşüm belirteci karakteridir. Bunun yapı içinde bulunmasının sebebi çok sayıda karaktere aynı kotarıcı işlevi kaydedebilmenizi sağlamaktır, ancak bu olmasa bile kotarıcı işlevi çağırdığınızda onları ayıracak bir yol vardır.
unsigned int is_long_double
L, ll veya q tür değiştiricileri belirtilmişse değeri mantıksal değer olarak doğrudur. Gerçek sayı dönüşümlerinde bu long double iken tamsayı dönüşümlerinde bir long long int’tir.
unsigned int is_char
hh tür değiştiricisi belirtilmişse değeri mantıksal değer olarak doğrudur.
unsigned int is_short
h tür değiştiricisi belirtilmişse değeri mantıksal değer olarak doğrudur.
unsigned int is_long
l tür değiştiricisi belirtilmişse değeri mantıksal değer olarak doğrudur.
unsigned int alt
# imi belirtilmişse değeri mantıksal değer olarak doğrudur.
unsigned int space
(boşluk karakteri) imi belirtilmişse değeri mantıksal değer olarak doğrudur.
unsigned int left
- imi belirtilmişse değeri mantıksal değer olarak doğrudur.
unsigned int showsign
+ imi belirtilmişse değeri mantıksal değer olarak doğrudur.
unsigned int group
' imi belirtilmişse değeri mantıksal değer olarak doğrudur.
unsigned int extra
Bu üyenin değerinin bağlama özgü bir anlamı vardır. Yapı printf işlevi tarafından kullanılmışsa değeri 0’dır. Kullanıcı tarafından tanımlanmış bir işlev tarafından kullanıldığında ise herhangi bir değer içerebilir.
unsigned int wide
Akım geniş yönlenimli ise bu üyenin değeri 1’dir.
wchar_t pad
Çıktıda en küçük alan genişliğinde boş kalan yerlere yerleştirilecek karakterdir. Boş kalan yerler sıfırlarla doldurulursa bu üyenin değeri '0'’dır, aksi takdirde boşluktur (' ').
Önceki Üst Ana Başlık Sonraki
Yeni Dönüşümlerin Kaydı Başlangıç Kotarıcı İşlevin Tanımlanması
Bir Linux Kitaplığı Sayfası