From 8cf046f0f5bbe1930d1502bf9492ae33711a0b0c Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Thu, 11 Dec 2025 15:43:01 +0000
Subject: [PATCH] Add bilingual French/English README.md
Co-authored-by: EniumRaphael <35407363+EniumRaphael@users.noreply.github.com>
---
README.md | 469 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 469 insertions(+)
create mode 100644 README.md
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..adf8146
--- /dev/null
+++ b/README.md
@@ -0,0 +1,469 @@
+# 📚 Libft - Custom C Library
+
+
+
+
+
+
+
+*A comprehensive C library recreating standard library functions and more*
+
+[English](#english) | [Français](#français)
+
+
+
+---
+
+## English
+
+### đź“– Table of Contents
+- [About](#about)
+- [Features](#features)
+- [Project Structure](#project-structure)
+- [Installation](#installation)
+- [Usage](#usage)
+- [Testing](#testing)
+- [Functions List](#functions-list)
+- [Author](#author)
+
+### 🎯 About
+
+**Libft** is a custom C library developed as part of the 42 school curriculum. This project involves recreating various standard C library functions and extending them with additional utilities. The library is organized into modular components, making it easy to maintain and extend.
+
+This library serves as a foundation for future C projects, providing reliable and well-tested implementations of common functions.
+
+### ✨ Features
+
+- **70+ functions** organized into logical modules
+- **Modular architecture** with separate headers for each category
+- **Well-documented** code with detailed function descriptions
+- **Strict compilation** with `-Wall -Wextra -Werror` flags
+- **Memory-safe** implementations
+- **Extended functionality** beyond standard library functions
+
+### đź“‚ Project Structure
+
+```
+libft/
+├── char/ # Character manipulation functions
+├── str/ # String manipulation functions
+├── memory/ # Memory management functions
+├── list/ # Linked list operations
+├── math/ # Mathematical utilities
+├── convert/ # Type conversion functions
+├── print/ # Output functions (ft_printf, fd output)
+├── gnl/ # Get Next Line implementation
+├── includes/ # Header files
+│ └── libft/
+└── Makefile # Build configuration
+```
+
+### 🚀 Installation
+
+#### Prerequisites
+- GCC or Clang compiler
+- Make
+
+#### Build Instructions
+
+1. **Clone the repository:**
+```bash
+git clone https://github.com/EniumRaphael/libft.git
+cd libft
+```
+
+2. **Compile the library:**
+```bash
+make
+```
+
+This will create `libft.a`, a static library ready to use in your projects.
+
+3. **Clean build artifacts:**
+```bash
+make clean # Remove object files
+make fclean # Remove object files and library
+make re # Rebuild from scratch
+```
+
+### đź’» Usage
+
+#### Basic Usage Example
+
+1. **Include the headers in your code:**
+```c
+#include "libft/str.h"
+#include "libft/memory.h"
+#include "libft/print.h"
+```
+
+2. **Compile your program with libft:**
+```bash
+clang -Wall -Wextra -Werror -I includes/libft your_program.c -L. -lft -o your_program
+```
+
+#### Example Program
+
+```c
+#include "libft/str.h"
+#include "libft/print.h"
+#include "libft/convert.h"
+
+int main(void)
+{
+ char *str = ft_strdup("Hello, 42!");
+ ft_printf("String: %s\n", str);
+ ft_printf("Length: %d\n", ft_strlen(str));
+
+ int num = ft_atoi("42");
+ char *num_str = ft_itoa(num);
+ ft_printf("Number: %s\n", num_str);
+
+ free(str);
+ free(num_str);
+ return (0);
+}
+```
+
+### đź§Ş Testing
+
+Run the test suite:
+```bash
+make test
+```
+
+This will compile and run all tests in the `test/` directory.
+
+### đź“‹ Functions List
+
+#### Character Functions (`char/`)
+| Function | Description |
+|----------|-------------|
+| `ft_isalpha` | Check if character is alphabetic |
+| `ft_isdigit` | Check if character is a digit |
+| `ft_isalnum` | Check if character is alphanumeric |
+| `ft_isascii` | Check if character is ASCII |
+| `ft_isprint` | Check if character is printable |
+| `ft_isspace` | Check if character is whitespace |
+| `ft_toupper` | Convert to uppercase |
+| `ft_tolower` | Convert to lowercase |
+
+#### String Functions (`str/`)
+| Function | Description |
+|----------|-------------|
+| `ft_strlen` | Calculate string length |
+| `ft_strchr` | Locate character in string |
+| `ft_strrchr` | Locate last occurrence of character |
+| `ft_strcmp` | Compare two strings |
+| `ft_strncmp` | Compare strings up to n characters |
+| `ft_strcpy` | Copy string |
+| `ft_strncpy` | Copy n characters of string |
+| `ft_strdup` | Duplicate string |
+| `ft_strjoin` | Concatenate two strings |
+| `ft_strtrim` | Trim characters from string |
+| `ft_split` | Split string by delimiter |
+| `ft_substr` | Extract substring |
+| `ft_strmapi` | Apply function to each character |
+| `ft_striteri` | Iterate through string with function |
+| `ft_strlcpy` | Size-bounded string copy |
+| `ft_strlcat` | Size-bounded string concatenation |
+| `ft_strnstr` | Locate substring in string |
+
+#### Memory Functions (`memory/`)
+| Function | Description |
+|----------|-------------|
+| `ft_memset` | Fill memory with constant byte |
+| `ft_bzero` | Zero a byte string |
+| `ft_memcpy` | Copy memory area |
+| `ft_memmove` | Copy memory with overlap handling |
+| `ft_memchr` | Scan memory for character |
+| `ft_memcmp` | Compare memory areas |
+| `ft_calloc` | Allocate and zero memory |
+
+#### Linked List Functions (`list/`)
+| Function | Description |
+|----------|-------------|
+| `ft_lstnew` | Create new list element |
+| `ft_lstadd_front` | Add element at the beginning |
+| `ft_lstadd_back` | Add element at the end |
+| `ft_lstsize` | Count list elements |
+| `ft_lstlast` | Get last element |
+| `ft_lstdelone` | Delete one element |
+| `ft_lstclear` | Delete and free all elements |
+| `ft_lstiter` | Iterate through list |
+| `ft_lstmap` | Map function over list |
+
+#### Mathematical Functions (`math/`)
+| Function | Description |
+|----------|-------------|
+| `ft_abs` | Absolute value |
+| `ft_power` | Power calculation |
+| `ft_sqrt` | Square root |
+| `ft_min` | Minimum of two numbers |
+| `ft_max` | Maximum of two numbers |
+
+#### Conversion Functions (`convert/`)
+| Function | Description |
+|----------|-------------|
+| `ft_atoi` | String to integer |
+| `ft_atoll` | String to long long |
+| `ft_atou` | String to unsigned |
+| `ft_itoa` | Integer to string |
+
+#### Print Functions (`print/`)
+| Function | Description |
+|----------|-------------|
+| `ft_printf` | Formatted output to stdout |
+| `ft_dprintf` | Formatted output to file descriptor |
+| `ft_putchar_fd` | Output character to fd |
+| `ft_putstr_fd` | Output string to fd |
+| `ft_putendl_fd` | Output string with newline to fd |
+| `ft_putnbr_fd` | Output number to fd |
+
+#### Get Next Line (`gnl/`)
+| Function | Description |
+|----------|-------------|
+| `get_next_line` | Read line from file descriptor |
+| `get_next_line_clear` | Free GNL static memory |
+
+### 👨‍💻 Author
+
+**Raphael Parodi** (rparodi)
+- 42 School Student
+- GitHub: [@EniumRaphael](https://github.com/EniumRaphael)
+
+### đź“„ License
+
+This project is part of the 42 school curriculum. Feel free to use it for learning purposes.
+
+---
+
+## Français
+
+### 📖 Table des matières
+- [Ă€ propos](#Ă -propos)
+- [Fonctionnalités](#fonctionnalités)
+- [Structure du projet](#structure-du-projet)
+- [Installation](#installation-1)
+- [Utilisation](#utilisation-1)
+- [Tests](#tests)
+- [Liste des fonctions](#liste-des-fonctions)
+- [Auteur](#auteur-1)
+
+### 🎯 À propos
+
+**Libft** est une bibliothèque C personnalisée développée dans le cadre du cursus de l'école 42. Ce projet consiste à recréer diverses fonctions de la bibliothèque standard C et à les étendre avec des utilitaires supplémentaires. La bibliothèque est organisée en composants modulaires, ce qui la rend facile à maintenir et à étendre.
+
+Cette bibliothèque sert de fondation pour les futurs projets en C, fournissant des implémentations fiables et bien testées de fonctions courantes.
+
+### ✨ Fonctionnalités
+
+- **Plus de 70 fonctions** organisées en modules logiques
+- **Architecture modulaire** avec des headers séparés pour chaque catégorie
+- **Code bien documenté** avec des descriptions détaillées des fonctions
+- **Compilation stricte** avec les flags `-Wall -Wextra -Werror`
+- **Implémentations sûres** au niveau mémoire
+- **Fonctionnalités étendues** au-delà de la bibliothèque standard
+
+### đź“‚ Structure du projet
+
+```
+libft/
+├── char/ # Fonctions de manipulation de caractères
+├── str/ # Fonctions de manipulation de chaînes
+├── memory/ # Fonctions de gestion mémoire
+├── list/ # Opérations sur listes chaînées
+├── math/ # Utilitaires mathématiques
+├── convert/ # Fonctions de conversion de types
+├── print/ # Fonctions de sortie (ft_printf, sortie fd)
+├── gnl/ # Implémentation de Get Next Line
+├── includes/ # Fichiers d'en-tête
+│ └── libft/
+└── Makefile # Configuration de compilation
+```
+
+### 🚀 Installation
+
+#### Prérequis
+- Compilateur GCC ou Clang
+- Make
+
+#### Instructions de compilation
+
+1. **Cloner le dépôt :**
+```bash
+git clone https://github.com/EniumRaphael/libft.git
+cd libft
+```
+
+2. **Compiler la bibliothèque :**
+```bash
+make
+```
+
+Cela créera `libft.a`, une bibliothèque statique prête à être utilisée dans vos projets.
+
+3. **Nettoyer les artifacts de compilation :**
+```bash
+make clean # Supprimer les fichiers objets
+make fclean # Supprimer les fichiers objets et la bibliothèque
+make re # Recompiler depuis zéro
+```
+
+### đź’» Utilisation
+
+#### Exemple d'utilisation basique
+
+1. **Inclure les headers dans votre code :**
+```c
+#include "libft/str.h"
+#include "libft/memory.h"
+#include "libft/print.h"
+```
+
+2. **Compiler votre programme avec libft :**
+```bash
+clang -Wall -Wextra -Werror -I includes/libft votre_programme.c -L. -lft -o votre_programme
+```
+
+#### Programme exemple
+
+```c
+#include "libft/str.h"
+#include "libft/print.h"
+#include "libft/convert.h"
+
+int main(void)
+{
+ char *str = ft_strdup("Bonjour, 42!");
+ ft_printf("Chaîne: %s\n", str);
+ ft_printf("Longueur: %d\n", ft_strlen(str));
+
+ int num = ft_atoi("42");
+ char *num_str = ft_itoa(num);
+ ft_printf("Nombre: %s\n", num_str);
+
+ free(str);
+ free(num_str);
+ return (0);
+}
+```
+
+### đź§Ş Tests
+
+Exécuter la suite de tests :
+```bash
+make test
+```
+
+Cela compilera et exécutera tous les tests du répertoire `test/`.
+
+### đź“‹ Liste des fonctions
+
+#### Fonctions de caractères (`char/`)
+| Fonction | Description |
+|----------|-------------|
+| `ft_isalpha` | Vérifie si le caractère est alphabétique |
+| `ft_isdigit` | Vérifie si le caractère est un chiffre |
+| `ft_isalnum` | Vérifie si le caractère est alphanumérique |
+| `ft_isascii` | Vérifie si le caractère est ASCII |
+| `ft_isprint` | Vérifie si le caractère est imprimable |
+| `ft_isspace` | Vérifie si le caractère est un espace blanc |
+| `ft_toupper` | Convertit en majuscule |
+| `ft_tolower` | Convertit en minuscule |
+
+#### Fonctions de chaînes (`str/`)
+| Fonction | Description |
+|----------|-------------|
+| `ft_strlen` | Calcule la longueur d'une chaîne |
+| `ft_strchr` | Localise un caractère dans une chaîne |
+| `ft_strrchr` | Localise la dernière occurrence d'un caractère |
+| `ft_strcmp` | Compare deux chaînes |
+| `ft_strncmp` | Compare n caractères de chaînes |
+| `ft_strcpy` | Copie une chaîne |
+| `ft_strncpy` | Copie n caractères d'une chaîne |
+| `ft_strdup` | Duplique une chaîne |
+| `ft_strjoin` | Concatène deux chaînes |
+| `ft_strtrim` | Supprime des caractères d'une chaîne |
+| `ft_split` | Divise une chaîne par délimiteur |
+| `ft_substr` | Extrait une sous-chaîne |
+| `ft_strmapi` | Applique une fonction à chaque caractère |
+| `ft_striteri` | Itère sur une chaîne avec une fonction |
+| `ft_strlcpy` | Copie de chaîne avec limite de taille |
+| `ft_strlcat` | Concaténation de chaîne avec limite |
+| `ft_strnstr` | Localise une sous-chaîne |
+
+#### Fonctions mémoire (`memory/`)
+| Fonction | Description |
+|----------|-------------|
+| `ft_memset` | Remplit la mémoire avec un octet constant |
+| `ft_bzero` | Met à zéro une chaîne d'octets |
+| `ft_memcpy` | Copie une zone mémoire |
+| `ft_memmove` | Copie mémoire avec gestion de chevauchement |
+| `ft_memchr` | Recherche un caractère en mémoire |
+| `ft_memcmp` | Compare des zones mémoire |
+| `ft_calloc` | Alloue et initialise à zéro |
+
+#### Fonctions de listes chaînées (`list/`)
+| Fonction | Description |
+|----------|-------------|
+| `ft_lstnew` | Crée un nouvel élément de liste |
+| `ft_lstadd_front` | Ajoute un élément au début |
+| `ft_lstadd_back` | Ajoute un élément à la fin |
+| `ft_lstsize` | Compte les éléments de la liste |
+| `ft_lstlast` | Obtient le dernier élément |
+| `ft_lstdelone` | Supprime un élément |
+| `ft_lstclear` | Supprime et libère tous les éléments |
+| `ft_lstiter` | Itère sur la liste |
+| `ft_lstmap` | Applique une fonction sur la liste |
+
+#### Fonctions mathématiques (`math/`)
+| Fonction | Description |
+|----------|-------------|
+| `ft_abs` | Valeur absolue |
+| `ft_power` | Calcul de puissance |
+| `ft_sqrt` | Racine carrée |
+| `ft_min` | Minimum de deux nombres |
+| `ft_max` | Maximum de deux nombres |
+
+#### Fonctions de conversion (`convert/`)
+| Fonction | Description |
+|----------|-------------|
+| `ft_atoi` | Chaîne vers entier |
+| `ft_atoll` | Chaîne vers long long |
+| `ft_atou` | Chaîne vers unsigned |
+| `ft_itoa` | Entier vers chaîne |
+
+#### Fonctions d'affichage (`print/`)
+| Fonction | Description |
+|----------|-------------|
+| `ft_printf` | Sortie formatée vers stdout |
+| `ft_dprintf` | Sortie formatée vers descripteur de fichier |
+| `ft_putchar_fd` | Affiche un caractère sur fd |
+| `ft_putstr_fd` | Affiche une chaîne sur fd |
+| `ft_putendl_fd` | Affiche une chaîne avec retour ligne sur fd |
+| `ft_putnbr_fd` | Affiche un nombre sur fd |
+
+#### Get Next Line (`gnl/`)
+| Fonction | Description |
+|----------|-------------|
+| `get_next_line` | Lit une ligne depuis un descripteur de fichier |
+| `get_next_line_clear` | Libère la mémoire statique de GNL |
+
+### 👨‍💻 Auteur
+
+**Raphael Parodi** (rparodi)
+- Étudiant à l'école 42
+- GitHub: [@EniumRaphael](https://github.com/EniumRaphael)
+
+### đź“„ Licence
+
+Ce projet fait partie du cursus de l'école 42. N'hésitez pas à l'utiliser à des fins d'apprentissage.
+
+---
+
+
+
+**Made with ❤️ at 42 School**
+
+