4.1 printf() Fonksiyonu
4.1 printf() Fonksiyonu
Standart C kütüphanesinde bulunan printf() fonksiyonu, değişkenlerin tuttuğu değerleri, onların adreslerini veya bir mesajı ekrana belli bir düzenle (format) standart çıkışa (stdout), yani ekrana, yazdırmak için kullanılan fonksiyondur. Daha önce yazılan örnek programlarda printf() fonksiyonundan yararlanmıştık. Şimdi bu fonksiyonun nasıl kullanıldığına bakalım.
Genel yazım biçimi:
1 |
int printf(const char *<em>format</em>, ...); |
Basit olarak ekrana Hata oluştu!.. şeklinde bir mesaj yazırma işlemi:
1 |
printf("Hata Oluştu!.."); |
şeklindedir. Çoğu zaman ekrana, programda kullanılan bir değişkenin değeri yazdırılmak istenebilir. Örneğin ekrana bir tamsayı değişkeninin içeriğini basırımak için, printf()
1 2 3 4 |
.... int x = 12; printf("x in değeri %d dir", x); .... |
gibi kullanılır. Bu program parçasının ekran çıktısı şöyle olacaktır:
1 |
x in değeri 12 dir |
Bu örnekte printf fonksiyonuna iki parametre aktarılmıştır. Birincisi ekranda gösterilecek ve çift tırnaklar arasına yazılan ifadeler, ikincisi ise ekranda sayısal değeri gösterilmek istenen değişken (x).
*format üç kısımdan oluşmaktadır:
- Düz metin (literal string): yazdırılmak istenen ileti.
Örneğin: printf("Ben gelmedim kavga için..."); gibi. - Konrol karakterleri (escape squence): değişkenlerin ve sabitlerin nasıl yazılacağını belirtmek veya imlecin alt satıra geçirilmesi gibi bazı işlemlerin gerçekleştirilmesi için kullanılır. Bu karakterler Tablo 4.1’de listelenmiştir.
Örneğin: printf("\tDostun evi gönlüdür...\n"); gibi.Tablo 4.1: Kontrol karakterleriKarakter Anlamı \a Ses üretir (alert) \b imleci bir sola kaydır (backspace) \f Sayfa atla. Bir sonraki sayfanın başına geç (formfeed) \n Bir alt satıra geç (newline) \r Satır başı yap (carriage return) \t Yatay TAB (horizontal TAB) \v Dikey TAB (vertical TAB) \" Çift tırnak karakterini ekrana yaz \' Tek tırnak karakterini ekrana yaz \\ \ karakterini ekrana yaz %% % karakterini ekrana yaz - Tip belirleyici (conversion specifier): % işareti ile başlar ve bir veya iki karakterden oluşur (%d gibi). Ekrana yazdırılmak istenen değişkenin tipi, % işaretinden sonra belirtilir (Bkz. Tablo 4.2) Örneğin: printf("x in değeri %d dir"); gibi.Tablo 4.2: Tip karakterleri
Tip Karakteri Anlamı Yazdırılacak veri tipi %c tek bir karakter char %s karakter dizisi (string) char %d işaretli ondalık tamsayı int, short %ld uzun işaretli ondalık tamsayı long %u işaretsiz ondalık tamsayı unsigned int, unsigned short %lu işaretsiz uzun tamsayı unsigned long %f Gerçel sayı float %lf Çift duayarlı gerçel sayı double
Tip karakterlerini kullanarak, birden çok veri tipi yazdırılabilir. Örneğin:
1 2 3 4 5 6 7 |
... int not= 12; float pi = 3.14; char kr = 'A'; printf(" not = %d , pi = %f ve kr = %c dir", not, pi, kr); ... |
gibi.
printf() fonksiyonu esnektir. Parametreler herhangi bir C deyimi olabilir. Örneğin x ve y nin toplamı şöyle yazılabilir:
1 |
printf("%d", x+y); |
printf fonksiyonu kullanımı Program 4.1’de verilmiştir.
Program 4.1: printf() fonksiyonunun kullanımı
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
/* 04prg01.c Sayısal değerleri ekrana yazdırmak için printf fonksiyonunun kullanımı */ #include <stdio.h> main() { int a = 2, b = 10, c = 50; float f = 1.05, g = 25.5, h = -0.1, yuzde; printf("3 tamsayi : %d %d %d\n", a, b, c); printf("3 tamsayi [TAB] : %d \t%d \t%d\n", a, b, c); printf("\n"); printf("3 reel sayi (yanyana) : %f %f %f\n", f, g, h); printf("3 reel sayi (altalta) : \n%f\n%f\n%f\n\n", f, g, h); yuzde = 220 * 25/100.0; printf("220 nin %%25 i %f dir\n", yuzde); printf("%f/%f isleminin sonucu = %f\n", g, f, g / f); printf("\nprogram sonunda beep sesi cikar...\a"); return 0; } |
ÇIKTI
1 2 3 4 5 6 7 8 9 10 11 12 13 |
3 tamsayi : 2 10 50 3 tamsayi [TAB] : 2 10 50 3 reel sayi (yanyana) : 1.050000 25.500000 -0.100000 3 reel sayi (altalta) : 1.050000 25.500000 -0.100000 220 nin %25 i 55.000000 dir 25.500000/1.050000 isleminin sonucu = 24.285715 program sonunda beep sesi cikar... |
printf fonksiyonunun geri dönüş değeri int tipindedir. Bu geri dönüş değeri çıktının kaç karakter olduğunu gösterir. Yani, printf fonksiyonu, *format ile tanımlanmış karakter topluluğunun kaç bayt olduğu hesaplar[6]. Program 4.2, printf‘in bu yönünüde ortaya çıkaran bir programdır.
Program 4.2: printf() fonksiyonunun kullanımı
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
/* 04prg02.c printf fonksiyonunun geri dönüş değerini gösterir */ #include <stdio.h> int main() { int karSay; int sayi = 1234; karSay = printf("Ugurlu sayim = %d\n",sayi); printf("Ust satirda karakter sayisi: %d dir\n", karSay); return 0; } |
ÇIKTI
1 2 |
Ugurlu sayim = 1234 Ust satirda karakter sayisi: 20 dir |
11. satırdaki işlemle, hem ekrana Ugurlu sayim = 1234 iletisi bastırılmakta, hem de karSaydeğişkenine bu iletinin uzunluğu atanmaktadır. Ekrana basılan karakterlerin sayısı (\n karakteri dahil) 20 dir.