Yazılım
Seçkin Üye
Merhaba MH forumu sakinleri ben Heaven.
Bugün Temel Giriş/Çıkış Fonksiyonları konumuza bir alt başlığı olan Formatlı Çıktı ile devam edeceğim.
Konumuza geçelim.
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ğı ksayısı ile belirlenir.
Ancak w > k + 2 olmalıdır.
C#:
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
583 1453
583 1453
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.
Gerçel sayılarda iş biraz daha karışık. Örnek vericek olursak:
C#:
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
123.456001
123.46
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.
printf() in formatlı kullanımı
C#:
/* 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;
}
Çıktımız şu şekilde olacaktır:
1299
Merhaba C
7324.25000
244.5
İyi Forumlar... Başka konularda görüşmek üzere