Printf

PRİNTF NOTLARIM

Merhabalar bugün ft_printf fonksiyonunu inceleyeceğiz.
 
ft_printf C dilinde yazılmış bir yazdırma fonksiyonudur ve standart printf fonksiyonuna benzerdir. 
Bu fonksiyon, stdio.h kütüphanesi içerisinde bulunmayıp, genellikle kendi başına bir dosya içerisinde tanımlanmıştır. 
 
ft_printf fonksiyonu, aşağıdaki gibi kullanılır:
 
int ft_printf(const char *format, ...);
 
Bu fonksiyon, bir format stringi ve bu string için gerekli olan argümanları alır. Format stringi, yazdırılacak verinin nasıl gösterileceğini belirtir ve bu string içerisinde özel karakterler kullanılır. Örneğin, %d karakteri bir integer değerin yazdırılmasını, %s karakteri bir stringin yazdırılmasını belirtir.

Gerekli dönüşümler hakkında kısa açıklamalar:
  • %c tek bir karakter yazdırır.
  • %s bir karakter dizisi yazdırır.
  • %p Void * pointer argümanını hexadecimal biçiminde yazdırır.
  • %d 10 tabanında decimal sayı yazdırır.
  • %i 10 tabanında tam sayı yazdırır.
  • %u 10 tabanında işaretsiz decimal sayı yazdırır.
  • %x hexadecimal sayıyı (16 tabanında) küçük harfler ile yazdırır.
  • %X hexadecimal sayıyı (16 tabanında) büyük harfler ile yazdırır.
  • %% yüzde işareti yazdırır.


va_list
va_list bir veri yapısıdır ve bir argüman listesi tutmak için kullanılır. Bu yapı, C dilinde stdarg.h başlığında tanımlanır ve fonksiyonlarda çoklu argümanları (variadic arguments) kullanmak için kullanılır.
  • Bir fonksiyonun sınırsız argüman alabilmesi için kullanılır.
  • Bir fonksiyonun sınırsız parametre aldığını belirtmek için kendi argümanlarından sonra '...' koyuyoruz. int topla(int miktar, ...);
  • va_start makrosu iki argüman alır. Birincisi argümanlardır, ikincisi ise fonksiyonun hangi değişkenden sonra sınırsız argüman almaya başlayacağını gösterir.
  • va_arg, ilk parametre olarak işlem yapılacak va_list'i alıyor. Va_arg her çağırıldığında bir sonraki indeks'i (argumani) alır. Örneğin argümanların 22,33,44 olduğunu düşünelim. var_arg ilk çağırıldığında 22, ikinci çağırıldığında 33'u çeker. İkinci aldığı parametre ise içeriden alınacak olan değerin hangi veri tipinde alınacağına karar verir.
  • va_end ile argüman kullanımını sonlandırıp, temizlik işlemini yaparız. Fakat daha sonra argümanlara ihtiyacımız olursa, tekrar start verebiliriz.
İtoa_base

  • ft_itoa_base adı verilen bir C dilinde yazılmış bir fonksiyondur. Bu fonksiyon, bir tam sayı değer (nbr), bir taban değeri (base), bir karakter dizisi (str), ve bir mod değeri (mod) alır.
  • Fonksiyon, verilen tam sayı değerinin belirtilen tabana göre bir karakter dizisine dönüştürülmüş halini oluşturur. Örneğin, eğer verilen taban değeri 10 ise, verilen tam sayı değerinin onluk tabana dönüştürülmüş halini oluşturur.
  • Fonksiyon öncelikle mod değerine göre işlem yapıyor , eğer mod 1 ise ve nbr negatif ise nbr'i negatif yapıyor ve '-' karakterini ekliyor. Mod 2 ise "0x" ekliyor. Eğer nbr sıfır ise '0' karakterini ekliyor. Sonra while döngüsü ile nbr'ın belirtilen tabana göre dönüştürülmüş hali oluşturuluyor. Ve son olarak bu dönüştürülmüş hali geri dönüyor.
 
Bool Nedir?
  • Bool türü, bir değişkenin true (doğru) veya false (yanlış) değerlerini tutmak için kullanılır. Bu tür, stdbool.h başlığında tanımlanmıştır ve genellikle bool, true ve false gibi tanımları içerir.
Örnek;
#include <stdbool.h>

int main() {
bool flag = true;

if (flag)
printf("Flag is true\n");
else
printf("Flag is false\n");

return 0;
}
 
Bu örnekte, flag değişkeni true değerini alır ve daha sonra bu değerin doğruluğu kontrol edilerek ilgili yazı ekrana yazdırılır. Bu örnekte, çıktısı "Flag is true\n" olacaktır.



Yorumlar