printf(), fprintf()

Kategori: C , 29 Haziran 2019 , JanFranco


printf fonksiyonu içine gönderilen tüm stringi, yüzde işaretleri hariç, ekrana bastırır. Yüzde işaretleri (%) kısımlar ise gönderilen parametreleri ekrana bastırır. Bir örnek:


int x = 17;

printf("My number is %d", 17);
Yüzdeden sonra gelen d harfi bir format code'dur. Diğer yaygın format kodları görelim:

%d	->	integer değerleri bastırır
%f	->	float değerleri bastırır
%c	->	char değerleri bastırır
%s	->	string değerleri bastırır
%%	->	% işaretini bastırır
printf fonksiyonunu boşluk bıraktırarak kullanabiliriz:

printf("%10d", x);
printf("%-10d", x);
Satırların sırayla çıktısı:

        17
17
Burada %10d diyerek sayının sol kısmına 8 boşluk ekledik. 8 olmasının sebebi gönderilen 10 parametresinden sayının basamak sayısı çıkartılıyor. Yani 10-2 = 8. Aynı işler diğer satırda da vardır. Ancak ikinci satırda boşlukları sağa ekler. Burada %2d diyerek bir boşlk sayısı belirtmek yerine dynamic bir şekilde de yapabilirdik:

int width = 5;

printf("%*d\n", width, x);
d harfinden önce yıldız sembolü koyuyoruz (*). Bu sembole de virgülden sonra gelen parametrelerden width parametresini veririz. integer sayıları manipüle ettiğimiz gibi float sayılar için de aynısını yapabiliriz. Örneğin:

float f = 12563.123456789;

printf("%.2f", f);
>> 12563.12

printf("%12.12f", f);
>> 12563.123046875000 Burada f harfinden önce .2 ve 12.12 şeklinde değerler gönderdik. .2f dediğimiz zaman, float değerdeki virgülden önceki kısımlara yani sol kısımdaki herhangi bir işlem yapılmaz. Virgülden sonraki basamaklar için 12 basamak olmasını istediğimiz için %12.12f yazdık. %1000.12f de yazsak virgülden sonraki 12 basamak ekrana basılır. Eğer basamak sayısı az ise kalan basamaklar 0 ile doldurulur. Diğer format code'lar:

%hd	-> short
%hu	-> unsigned short
%ld	-> long
%lu	-> unsigned long
%hhd	-> char
%hhu	-> unsigned char
%lld	-> long long
%llu	-> unsigned long long
printf fonksiyonu konsola yazarken, fprintf fonksiyonu dosyalara yazar. Kullanımı aşağıdaki gibidir:

fprintf(<FILE Pointer>, <Data to print>, ...);
Bir örnek yapalım:

int main() {
    int i, n=2;
    char str[50];

    FILE *fptr = fopen("myFile.txt", "w");
    if (fptr == NULL){
    	printf("Could not open file");
	return 0;
    }

    for (i=0; i<n; i++){
	puts("Enter a name");
	gets(str);
	fprintf(fptr,"%d.%s\n", i, str);
    }

    fclose(fptr);

    return 0;
}
Burada myFile.txt dosyasını write modunda açtığımız için, dosya olmasa da oluşturur. n = 2 dediğimizden for döngüsü iki kez çalışacaktır. puts fonksiyonu konsola Enter a name yazısını bastıracaktır. gets fonksiyonu kullanıcının konsola yazdığı yazıları alıp str arrayinde saklayacaktır. fprintf fonksiyonu str'nin içindeki yazıları file pointer'ın gösterdiği dosyaya yazacaktır. Son olarak fclose dosyayı kapatacaktır.


Sonraki Yazı: scanf(), fscanf()
Yorumlar

Henüz bir yorum bulunmuyor.
Yorum bırakın