libft

Nedir?

Burada, C dilinin standart fonksiyonlarının bir bölümünü yeniden kodladım.


ft_atoi.c

  • Ne yaptım?
    • Bir karakter dizisini (string) okuyarak, sayı ifadesine dönüştürdüm (integer).
    • Metnin başındaki boşlukları (white-space) atladım, ardından + veya - işaretini kontrol ettim ve sadece rakam kısımlarını int tipinde döndürdüm.
  • Kullanım: ft_atoi(" -123")-123

ft_bzero.c

  • Ne yaptım?
    • Verilen bellek bölgesini (örneğin bir dizi) sıfırlarla doldurdum.
    • n byte boyunca 0 (char olarak '\0') yazarak hafızayı temizlemiş oldum.
  • Kullanım: Dizi veya bellek bloklarını resetlemek için kullanılır.

ft_calloc.c

  • Ne yaptım?
    • Bellekte count * size kadar blok ayırdım (malloc gibi), ardından bu blokları 0 ile doldurdum.
    • Normal malloc’tan farkı, ayrılan belleği otomatik olarak sıfırlamasıdır.
  • Kullanım: “Güvenli” bellek tahsisi (Sıfır initialisation).

ft_isalnum.c

  • Ne yaptım?
    • Parametre olarak gelen karakterin alfanumerik (harf ya da rakam) olup olmadığını kontrol ettim.
    • ASCII tablosuna bakarak A-Z, a-z, 0-9 aralıklarında olup olmadığını döndürdüm (1 veya 0).
  • Kullanım: Harf veya rakam geçerliliği kontrolünde.

ft_isalpha.c

  • Ne yaptım?
    • Gelen karakterin alfabetik (A-Z veya a-z) olup olmadığını kontrol ettim.
  • Kullanım: Harf olup olmadığını öğrenmek istediğimde.

ft_isascii.c

  • Ne yaptım?
    • Gelen karakterin ASCII tablosundaki 0–127 aralığında olup olmadığını kontrol ettim.
  • Kullanım: Sadece ASCII karakter setini kabul eden fonksiyonlarda.

ft_isdigit.c

  • Ne yaptım?
    • Parametre karakterin ‘0’–‘9’ arasında olup olmadığını kontrol ettim.
  • Kullanım: Kullanıcının girdiği değerin rakam olup olmadığını test etmek.

ft_isprint.c

  • Ne yaptım?
    • Gelen karakterin ekranda basılabilir bir karakter (32–126 arası ASCII) olup olmadığını sorguladım.
  • Kullanım: Kontrol karakterlerini ayırt etmek.

ft_itoa.c

  • Ne yaptım?
    • int tipindeki sayıyı karakter dizisine dönüştürdüm (ASCII formuna).
    • Örneğin 123 → “123”, -45 → “-45” şeklinde dönüştürme yapar.
  • Kullanım: Sayısal değerleri string olarak göstermek istediğimde.

ft_lstadd_front.c

  • Ne yaptım?
    • Bağlı listenin (linked list) başına yeni bir eleman (node) ekledim.
    • head işaretçisini güncelledim.
  • Kullanım: Listeyi güncellerken yeni node’u en öne koymak istendiğinde.

ft_lstlast.c

  • Ne yaptım?
    • Bir bağlı listenin son elemanına kadar ilerleyerek o düğümü (node) döndürdüm.
  • Kullanım: Listenin en sonunu bulmak için kullanılır.

ft_lstnew.c

  • Ne yaptım?
    • Bellekte yeni bir liste düğümü (node) oluşturdum, content alanına parametreyi koydum ve next’i NULL yaptım.
  • Kullanım: Yeni node oluşturup listeye eklemek istediğimde.

ft_lstsize.c

  • Ne yaptım?
    • Liste başından sonuna kadar ilerleyerek düğüm (node) sayısını döndürdüm.
  • Kullanım: Bağlı listenin kaç elemandan oluştuğunu öğrenmek için.

ft_memchr.c

  • Ne yaptım?
    • Bir bellek (dizi) bloğunun ilk n byte’ında belirli bir karakterin ilk geçtiği adresi aradım, bulduysam pointer döndürdüm, bulamazsam NULL.
  • Kullanım: Bellek içinde ham veri arama.

ft_memcmp.c

  • Ne yaptım?
    • İki bellek bloğunu byte byte karşılaştırdım. Farklı oldukları ilk byte’ın farkını (pozitif/negatif) döndürdüm.
  • Kullanım: Dizi veya belleğin eşitliğini test etmek (memcmp ile).

ft_memcpy.c

  • Ne yaptım?
    • Kaynak bellekten hedef belleğe n byte’lık kopyalama yaptım.
    • Örtüşme (overlap) durumunda garantisi yok (memmove önerilir).
  • Kullanım: Düz kopyalamalar için hızlı fonksiyon.

ft_memmove.c

  • Ne yaptım?
    • Overlap (üst üste binme) durumunu da gözeterek güvenli kopyalama sağladım.
    • Veriyi hedefe taşıyabilmek için, gerektiğinde geçici olarak başka yerde sakladım veya kopyalama yönünü ayarladım.
  • Kullanım: Bellek blokları çakışıyorsa (ör. aynı dizi içinde kaydırma yapacaksanız).

ft_memset.c

  • Ne yaptım?
    • Bir bellek bloğunu istenen karakterle (byte) doldurdum.
    • n adet baytı, örneğin 0xFF veya 0 gibi bir değerle sıfırladım.
  • Kullanım: Dizi/bellek ilk değeri atamak.

ft_putchar_fd.c

  • Ne yaptım?
    • Bir karakteri belirtilen dosya tanımlayıcısına (file descriptor) yazdım. (Genellikle 1 → stdout, 2 → stderr).
  • Kullanım: Normal putchar ama fd üzerinden.

ft_putendl_fd.c

  • Ne yaptım?
    • Parametre olarak verilen string’i yazdıktan sonra bir newline (\n) karakteri ekleyip fd’ye yazdım.
  • Kullanım: printf benzeri, ama fd ve otomatik satır sonu.

ft_putnbr_fd.c

  • Ne yaptım?
    • Integer sayıyı karakter dizisine dönüştürüp hedef fd’ye yazdım (rekürsif ya da döngüsel yöntemle).
  • Kullanım: Sayıları çıktı almak istediğimde (örn. terminal) fd üzerinden.

ft_putstr_fd.c

  • Ne yaptım?
    • Bir string’in tamamını fd’ye yazdım.
  • Kullanım: “stdout” veya başka bir dosya tanımlayıcısına metin gönderirken.

ft_split.c

  • Ne yaptım?
    • Bir string’i, verilen bir ayırıcı karaktere (delimiter) göre parçalara böldüm ve her bir parçayı ayrı bir dizi elemanı (null-terminated) olarak döndürdüm.
  • Kullanım: “CSV” benzeri veya boşlukla ayrılmış kelimeleri almak istediğimde kullanırım.

ft_strchr.c

  • Ne yaptım?
    • Bir string içinde istenen karakteri (char) aradım ve bulduğum ilk konumun adresini döndürdüm. Bulamazsam NULL.
  • Kullanım: “Metin içinde karakter araması” (strchr).

ft_strdup.c

  • Ne yaptım?
    • Verilen string için yeterli bellek ayırıp, string’in kopyasını oluşturup döndürdüm.
  • Kullanım: Bazen orijinal string’i bozmamak veya üzerinde işlem yapmak istediğimde yedeğini almak için.

ft_striteri.c

  • Ne yaptım?
    • Her karakter üzerinde bir fonksiyonun çalıştırılabilmesi için fonksiyon işaretçisi kullandım.
    • String’i karakter karakter dolaşıp, parametre olarak verilen fonksiyonu uyguladım.
  • Kullanım: Tüm karakterlere toplu işlem uygulamak (küçük harfe çevirme vb.).

ft_strjoin.c

  • Ne yaptım?
    • İki string’i birleştirip yeni bir string döndürdüm (heap’te).
    • Örneğin ft_strjoin("Hello", "World") -> “HelloWorld”.
  • Kullanım: String concatenation (ama belleği biz ayırıyoruz).

ft_strlcat.c

  • Ne yaptım?
    • Belirli bir buffer içine ikinci bir string’i eklerken, toplam uzunluğu kontrol ettim ve taşmaları engelleyecek şekilde kopyalama yaptım.
    • Standart strncat’e benzer ama daha güvenli.
  • Kullanım: Buffer boyutu kontrolüyle string ekleme.

ft_strlcpy.c

  • Ne yaptım?
    • Kaynak string’i hedef buffer’a kopyaladım, ancak hedefin boyutu kadar kopyalama yaptım ve mutlaka null-terminate ettim.
    • strcpy’e kıyasla taşma riskini azaltır.
  • Kullanım: Güvenli kopyalama.

ft_strlen.c

  • Ne yaptım?
    • String’in uzunluğunu bulmak için \0 karakterine kadar saydım ve sayı döndürdüm.
  • Kullanım: Temel string uzunluğu fonksiyonu.

ft_strmapi.c

  • Ne yaptım?
    • striteriye benzer bir mantıkla, her karaktere bir fonksiyon uygularak dönüş değerlerini yeni bir string’de topladım.
    • Örneğin karakterleri büyük harfe çevirip yeni bir string döndürebilirim.
  • Kullanım: Her bir karakter üzerinde işlem yapıp yeni string oluşturma.

ft_strncmp.c

  • Ne yaptım?
    • İki string’i belirli bir uzunluğa kadar (n) karşılaştırdım, fark gördüğüm anda pozitif/negatif değer döndürdüm.
  • Kullanım: String eşitliğini belli karakter sayısına kadar test etme.

ft_strnstr.c

  • Ne yaptım?
    • Büyük bir string içinde, küçük bir string’in belirli bir uzunluk (len) dahilinde ilk geçtiği yeri aradım. Bulduysam pointer, bulamadıysam NULL döndürdüm.
  • Kullanım: strstr benzeri, ama arama uzunluğunu kısıtlamak için.

ft_strrchr.c

  • Ne yaptım?
    • String içinde aradığım karakterin son (rightmost) konumunu bulup o adresi döndürdüm.
  • Kullanım: Metinde belirli bir karakterin en son nerede geçtiğini bulmak.

ft_strtrim.c

  • Ne yaptım?
    • Verilen string’in başında ve sonunda tanımlı karakterleri (örneğin boşluk, tab veya özel set) budayıp, ortadaki kısmı kopyalayıp döndürdüm.
  • Kullanım: Kullanıcıdan gelen input’u temizlemek, kenar boşlukları silmek.

ft_substr.c

  • Ne yaptım?
    • Bir string’in istenen konumundan itibaren belirtilen uzunluk kadar kısmını çekip yeni bir string döndürdüm.
  • Kullanım: Dize parçalama, substring elde etme.

ft_tolower.c

  • Ne yaptım?
    • Karakter büyük harfse, küçük harfe dönüştürdüm. Değilse aynı karakteri döndürdüm.
  • Kullanım: Case dönüşümleri (Örneğin ASCII ‘A’ → ‘a’).

ft_toupper.c

  • Ne yaptım?
    • Karakter küçük harfse, büyük harfe çevirip döndürdüm.
  • Kullanım: Metindeki harfleri uppercase yapmak vb.

“libft” için bir yanıt

  1. mdiraga avatarı

    Bu proje bir harika dostum 😀

mdiraga için bir yanıt yazın Yanıtı iptal et

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir