4.6 Formatlı Çıktı
4.6 Formatlı Çıktı
Bundan önceki programlardaki değişkenler serbest biçimde (free format), yani derleyicinin belirlediği biçimde ekrana yazdırılmıştı. Bazen giriş ve çıkışın biçimi kullanıcı tarafından belirlenmesi gerekebilir. Bu işlem:
Tamsayılarda %d yerine %wd
Gerçel sayılarda %f yerine %w.kf
Stringlerde %s yerine %ws
biçimindeki kullanım ile sağlanır. Burada w yazılacak olan sayının alan genişliği olarak adlandırılır. Gerçel bir değişken ekrana yazılacaksa, değişkenin virgülden sonra kaç basamağının yazdırılacağı k sayısı ile belirlenir. Ancak w > k + 2 olmalıdır.
1 2 3 4 |
int i=583,j=1453; printf("%d %d\n",i,j); /* serbest biçim */ printf("%5d %8d\n",i,j); /* formatlı */ |
program parçasının ekran çıktısı şöyledir:
ÇIKTI
1 |
583 1453 583 1453 |
Gerçel sayılarda iş biraz daha karışık. Örneğin:Birinci satır serbest formatta ikinci satır ise formatlı yazılmıştır. i değişkeninin tuttuğu 583 sayısı %5d formatıyla yazdırılınca, bu sayı için 5 alan genişliği tanımlanır arakasından sağdan başlayarak sayı bu alana yazılır. Benzer olarak j değişkeni, 8 alan genişlikli bir bölgeye yazılır.
1 2 3 4 |
int x=123.456; printf("%f\n",x); /* serbest biçim */ printf("%8.2f\n",x); /* formatlı */ |
program parçası çalıştırıldığında aşağıdaki sonuç gözlenir:
ÇIKTI
1 |
123.456001 123.46 |
Son olarak formatlı çıktı ile ilgili bir örnek Program 4.4’de verilmiştir. İnceleyiniz.Birinci satır serbest formatta ikinci satır ise formatlı yazılmıştır. İkinci satırda x değişkeni için ayrılan alan genişliği 8 ve noktadan sonra 2 basamağa kadar hassasiyet önemsenmiştir. Dikkat edilirse noktadan sonra sayı uygun bir şekilde yuvarlanmış ve sayı sağa dayalı olarak yazılmıştır.
Program 4.4: printf() in formatlı kullanımı
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
/* 04prg04.c: Formatlı çıktı */ #include <stdio.h> main() { float x = 7324.25, y = 244.531; int i = 1299; char *c = "Merhaba C"; printf("%10d\n" ,i); printf("%10s\n" ,c); printf("%10.5f\n",x); printf("%10.1f\n",y); return 0; } |
ÇIKTI
1 |
1299 Merhaba C 7324.25000 244.5 |