{"id":18337767,"url":"https://github.com/pin3dev/42_libft","last_synced_at":"2025-04-09T20:18:33.795Z","repository":{"id":259515023,"uuid":"578383715","full_name":"pin3dev/42_Libft","owner":"pin3dev","description":"Custom C library that replicates standard functions and introduces extra utilities for handling strings, memory, and lists. This project serves as a foundation for mastering low-level programming and understanding function implementation in C.","archived":false,"fork":false,"pushed_at":"2024-10-24T23:13:05.000Z","size":125,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-09T20:18:30.628Z","etag":null,"topics":["42-cursus","42-libft","42-school","42borntocode","42cursus","42sp","custom-library","libc","libft","libft-42","libft42","low-level"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pin3dev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-12-14T23:31:21.000Z","updated_at":"2024-10-24T23:13:09.000Z","dependencies_parsed_at":"2024-10-26T05:47:37.269Z","dependency_job_id":"c6b3d8cc-6eb2-43e1-b224-e7d12c8d726e","html_url":"https://github.com/pin3dev/42_Libft","commit_stats":null,"previous_names":["pin3dev/42_libft"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pin3dev%2F42_Libft","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pin3dev%2F42_Libft/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pin3dev%2F42_Libft/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pin3dev%2F42_Libft/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pin3dev","download_url":"https://codeload.github.com/pin3dev/42_Libft/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248103910,"owners_count":21048246,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["42-cursus","42-libft","42-school","42borntocode","42cursus","42sp","custom-library","libc","libft","libft-42","libft42","low-level"],"created_at":"2024-11-05T20:12:13.339Z","updated_at":"2025-04-09T20:18:33.773Z","avatar_url":"https://github.com/pin3dev.png","language":"C","readme":"\u003ch1 align=\"center\"\u003eLibft\u003c/h1\u003e\n\u003cp align=\"center\"\u003e \n  \u003cimg src=\"https://img.shields.io/badge/grade-125%2F125-yellow?style=for-the-badge\u0026logo=42\u0026labelColor=gray\"/\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e \n  \u003ca href=\"https://github.com/pin3dev/42_Cursus/tree/main/library/#00-Libft\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Static_Library-blue?style=for-the-badge\"/\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Makefile-blue?style=for-the-badge\"/\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Compilation-blue?style=for-the-badge\"/\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Memory-blue?style=for-the-badge\"/\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Arrays-blue?style=for-the-badge\"/\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Linked_List-blue?style=for-the-badge\"/\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003ch3\u003e\n  \u003cp align=\"center\"\u003e \n    \u003ca href=\"#introduction\"\u003eIntroduction\u003c/a\u003e • \n    \u003ca href=\"#structure\"\u003eStructure\u003c/a\u003e • \n    \u003ca href=\"#docs\"\u003eDocs\u003c/a\u003e • \n    \u003ca href=\"#cloning\"\u003eCloning\u003c/a\u003e • \n    \u003ca href=\"#usage\"\u003eUsage\u003c/a\u003e • \n    \u003ca href=\"#norms\"\u003eNorms\u003c/a\u003e • \n    \u003ca href=\"#theoretical\"\u003eTheoretical\u003c/a\u003e   \n  \u003c/p\u003e\n\u003c/h3\u003e\n\n## 🗣️ Introduction \u003ca id=\"introduction\"\u003e\u003c/a\u003e\n\nThis repository contains a custom C library, **Libft**, implemented as part of a coding project.  \n\nThe objective of the project is to create a **static library** (`.a` file) in C that reimplements many of the standard library functions, as well as additional useful functions.  \n\nA static library is a collection of object files that are linked directly into the final executable at compile time.  \nThe goal is to gain a deeper understanding of how these functions work internally and to provide a versatile library that can be reused in future C projects without relying on external dependencies.  \n\n## 🧬 Project Structure \u003ca id=\"structure\"\u003e\u003c/a\u003e\n\nThe mandatory part of the project involves reimplementing several standard C library functions.  \nThese functions are divided into different subcategories, depending on their purpose.  \nThe primary categories are **Libc functions** (reimplementations of standard C library functions) and **Additional functions** (new utility functions added to complement the library).  \nWithin these categories, the functions can be further grouped based on their operations on **strings**, **memory**, **utility** functions, and **linked lists**.\n\n## 🗃️ Documentation \u003ca id=\"docs\"\u003e\u003c/a\u003e\n\nFor detailed documentation, including usage examples and function breakdowns, please visit the link below:\n\n\u003cp align=\"center\"\u003e \n  \u003ca href=\"https://github.com/pin3dev/42_Libft/wiki\"\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Libft_Docs-lightgreen?style=for-the-badge\"/\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n## 🫥 Cloning the Repository \u003ca id=\"cloning\"\u003e\u003c/a\u003e\n\nTo clone this repository and compile the project, run the following commands:\n\n```bash\ngit clone https://github.com/pin3dev/42_Libft.git\ncd 42_Libft/libft\n```\nThis will download the project from GitHub into your local machine in current directory. Once inside the `libft` directory, you must run make to compile the library.  \n\n## 🕹️ Compilation and Usage \u003ca id=\"usage\"\u003e\u003c/a\u003e\n\n### Makefile\n\nA `Makefile` is provided to automate the compilation process. The Makefile includes the following rules:\n\n- `all`: Compiles the library (`libft.a`).\n- `clean`: Removes object files.\n- `fclean`: Removes object files and the library (`libft.a`).\n- `re`: Recompiles the entire project.\n- `bonus`: Compiles the bonus part of the project.\n- `test`: Compiles the bonus part and runs the test written by [@alelievr](https://github.com/alelievr/libft-unit-test)\n\nTo compile the library, simply run:\n```bash\nmake\n```\nThis will generate the `libft.a` library, which can be linked in other projects to use all functions.\n\n\u003c!--\nTo compile the bonus part, use:\n```bash\nmake bonus\n```\n\nTo compile the bonus part and test, use:\n```bash\nmake test\n```\n--\u003e\n\n### Basic Usage\n\nTo use the **libft** library in your C code, follow the steps below:\n\n1. Include the header in your code:\n    ```c\n    #include \"libft/inc/libft.h\"\n    ```\n\n2. Compile your code with the library:\n    ```bash\n    gcc -Wall -Wextra -Werror -o your_exec your_code.c 42_Libft/libft/libft.a\n    ```\n\n3. You can now use any `libft` function in your program now!\n\n## ⚠️ Norms and Guidelines Disclaimer \u003ca id=\"norms\"\u003e\u003c/a\u003e\n\nThis project strictly follows the [**42 School Norm**](https://github.com/pin3dev/42_Cursus/blob/b9cd0fe844ddb441d0b3efb98abcee92aee49535/assets/General/norme.en.pdf) coding guidelines, which significantly influenced certain decisions in its implementation. These rules may sometimes lead to seemingly inefficient or unusual solutions, but they were necessary to meet the strict requirements of the school. \n\n## 📖 Theoretical Background \u003ca id=\"theoretical\"\u003e\u003c/a\u003e\n\nAll the theoretical material used to develop this project is organized and can be accessed directly via the link below:  \n\n\u003cp align=\"center\"\u003e \n  \u003ca href=\"https://github.com/pin3dev/42_Cursus/tree/main/library/#00-Libft\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Libft_Library-gray?style=for-the-badge\"/\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpin3dev%2F42_libft","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpin3dev%2F42_libft","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpin3dev%2F42_libft/lists"}