Konuyu Açan #1
printf ile Biçimli Çıktı

Amaç: C dilinde printf ile çıktının biçimini kontrol etmek, kullanıcıya okunabilir ve temiz bir çıktı sunmak için temel teknikleri derinlemesine incelemek.


printf fonksiyonu, C standart kütüphanesinin vazgeçilmez araçlarındandır. Biçimlendirme kuralları, yazdırılacak değerin türüne göre belirli dönüştürme karakterleriyle çalışır ve bunlar genelde şu kategorilere ayrılır: tamsayılar, ondalık sayılar, karakterler ve dizeler. Her bir kategoride, genişlik (width), hizalama (alignment), dolgu karakteri (fill), kesin baskı (precision) ve farklı onaylama opçileri önemli rol oynar.

  • Temel dönüşüm belirteçleri:
    • %d, %i: signed int
    • %u: unsigned int
    • %f, %e, %g: float/double için farklı temsil biçimleri
    • %s: karakter dizisi
    • %c: tek karakter
    • %p: gösterici adresi
    • %%: yüzde işareti için literal

  • Genişlik ve hizalama:
    • Genişlik: %10d gibi, sayının 10 karakterlik alanda yazdırılmasını sağlar.
    • Hizalama: sola hizalama için -, örn. %-10s.
    • Sıfırla dolgu: %010d, boşluk yerine sıfır dolgu kullanır.

  • Kesinlik (precision):
    • %6.2f gibi, ondalık basamak sayısını belirler; ayrıca %-.2f ile negatif yönlendirme olabilir.
    • Stringler için kesim: %.5s, dizenin ilk 5 karakterini yazdırır.

  • Nokta (.) ile kontrol:
    • Nokta, işaretçi gibi gösterimlerde ayrıntılı biçimlendirme elde eder; örn. printf("%.*s", n, str) gibi dinamik kesim.

  • Örnekler:
    • printf("İsim: %s Yaş: %d\n", "Ayşe", 28);
    • printf("Oran: %6.2f%%\n", 83.456); // yüzde işaretini kaçırmamak için %%
    • printf("Adres: %p\n", (void*)(&Ayşe));



Kullanım pratikleri ve dikkat edilmesi gerekenler:
  • Taşınabilirlik açısından printf’in dönüştürme belirteçlerinin davranışı compiler’a göre hafif farklar gösterebilir; özellikle %ld vs %ldint uzun türlerde uyum dikkatli olmalı.
  • Int tiplerinde uzunluk dönüşümlerini doğru kullanmak için sizce hangi senaryoda sizeof türünü kontrol etmek daha güvenli? Örneğin, platformlar arası dosya boyutları veya ağ protokolleri için belirli sabit genişlikler tercih edilir.
  • Çoklu dönüşümde alan ve kesim kararını uygularken, çıktı düzeninin kullanıcı tarafından anlaşılabilir olması amaçlanır; raporlama tabloları veya loglar için sabit genişlikli sütunlar faydalıdır.
  • Güvenlik açısından kullanıcı girişiyle biçimlendirme arasındaki ilişki dikkat edilmelidir; format string’in dinamik oluşması, format string enjeksiyonu açısından risk taşıyabilir.


Bu konu üzerinde pratik etmek istediğiniz belirli bir çıktı örneği var mı? Belirli bir formattaki tablo veya günlük kayıt çıktısını nasıl daha okunabilir kılacağımızı birlikte inceleyebiliriz.

Yanıt vermek için giriş yapmış olmalısınız.

Bu konuyu görüntüleyen kullanıcılar (Toplam: 6, Üyeler: 6, Misafirler: 0)
Toplam: 6 (üyeler: 6, misafirler: 0)
0 alıntı seçildi