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 boyunca0
(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.
- Bellekte
- 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 venext
’i NULL yaptım.
- Bellekte yeni bir liste düğümü (node) oluşturdum,
- 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.
- Bir bellek (dizi) bloğunun ilk
- 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).
- Kaynak bellekten hedef belleğe
- 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.
- Parametre olarak verilen string’i yazdıktan sonra bir newline (
- 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.
- String’in uzunluğunu bulmak için
- Kullanım: Temel string uzunluğu fonksiyonu.
ft_strmapi.c
- Ne yaptım?
striteri
ye 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.
- Büyük bir string içinde, küçük bir string’in belirli bir uzunluk (
- 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
-
Bu proje bir harika dostum 😀
mdiraga için bir yanıt yazın Yanıtı iptal et