Bu proje, 42 müfredatının bir parçası olarak sumdogan tarafından oluşturulmuştur.
Libft, 42 müfredatındaki temel C projelerinden biridir.
Bu projenin amacı, standart C kütüphanesinde bulunan bazı fonksiyonları yeniden yazarak
kendi statik kütüphanemizi (libft.a) oluşturmaktır.
Bu proje sayesinde:
- Bellek yönetimi (malloc / free)
- String işlemleri
- Pointer mantığı
- Linked list (bağlı liste) yapıları
- Norm kurallarına uygun C kodu yazma
konularında sağlam bir temel kazanılır.
makeBu komut, proje kök dizininde libft.a dosyasını oluşturur.
make/make all: kütüphaneyi derlermake clean:.odosyalarını silermake fclean:.odosyaları velibft.adosyasını silermake re: her şeyi yeniden derler
#include "libft.h"cc -Wall -Wextra -Werror main.c libft.aBu kütüphane, C dilinde yazılmış temel string, bellek ve yardımcı fonksiyonları içerir ve 42 projelerinde tekrar kullanılmak üzere oluşturulmuştur.
Standart C kütüphanesindeki temel fonksiyonların yeniden yazılmış hâlleri:
- Karakter kontrolü:
ft_isalpha,ft_isdigit,ft_isalnum,ft_isascii,ft_isprint - String işlemleri:
ft_strlen,ft_strchr,ft_strrchr,ft_strncmp,ft_strnstr - Bellek işlemleri:
ft_memset,ft_bzero,ft_memcpy,ft_memmove,ft_memchr,ft_memcmp - Dönüştürme ve yardımcılar:
ft_toupper,ft_tolower,ft_atoi - Dinamik bellek kullananlar:
ft_calloc,ft_strdup - BSD kökenli fonksiyonlar:
ft_strlcpy,ft_strlcat
Libc’de bulunmayan veya farklı amaçlarla kullanılan yardımcı fonksiyonlar:
- String oluşturma ve düzenleme:
ft_substr,ft_strjoin,ft_strtrim - Parçalama ve dönüştürme:
ft_split,ft_itoa - Fonksiyon uygulama:
ft_strmapi,ft_striteri - Dosya tanımlayıcıya yazma:
ft_putchar_fd,ft_putstr_fd,ft_putendl_fd,ft_putnbr_fd
Tek yönlü bağlı liste yapısı ve yardımcı fonksiyonlar:
- Düğüm oluşturma ve ekleme:
ft_lstnew,ft_lstadd_front,ft_lstadd_back - Liste bilgisi:
ft_lstsize,ft_lstlast - Bellek yönetimi:
ft_lstdelone,ft_lstclear - Liste üzerinde işlem:
ft_lstiter,ft_lstmap
mansayfaları- The C Programming Language – Kernighan & Ritchie
- 42 Intranet dokümantasyonu
Bu projede yapay zeka araçları:
- Konu kavrama
- Edge case analizi
- Dokümantasyon yazımı
- README.md dosyasını düzenleme
- Linked list konusu yardımı
amaçlarıyla destekleyici olarak kullanılmıştır.
Kodlar doğrudan kopyalanmamış, öğrenci tarafından yazılmış ve anlaşılmıştır.
- 42 Norm’una uygundur
- Global değişken yoktur
- Bellek sızıntısı bulunmaz