Libft is a comprehensive C library that I developed as a student project. It includes a set of standard libc functions and additional utility functions. The project aims to provide a robust foundation for future C programming endeavors by ensuring a deep understanding of these essential functions and facilitating their reuse.
The repository is organized with the following structure:
Makefile: Automation script for compilation and project management.inc/libft.h: Header file containing function prototypes and necessary definitions.src/ft_*.c: Source files implementing various functions.
The library includes meticulously crafted versions of standard libc functions such as toupper, tolower, strchr, strncmp, and more. Each function has the same prototype and behavior as its libc counterpart.
In addition to standard libc functions, the library offers extra utility functions like ft_substr, ft_strjoin, ft_strtrim, ft_split, ft_itoa, and more. These functions enhance the versatility of the library for various programming tasks.
For a more advanced touch, the library includes functions for working with linked lists. This bonus section adds functionality like creating a new list element (ft_lstnew), adding elements to the front (ft_lstadd_front), finding the size of the list (ft_lstsize), and more.
The project is considered complete as it adheres to the following guidelines:
- All functions have been implemented according to specifications.
- Code follows the
42 SchoolNorm for C programming. - Memory management is efficient, avoiding memory leaks.
- A Makefile automates the compilation process.
Throughout the development of Libft, I have gained proficiency in the following areas:
- C Programming: Enhanced skills in writing efficient and well-structured C code.
- Algorithmic Thinking: Developed algorithms for various functions, ensuring optimal performance.
- Memory Management: Mastered dynamic memory allocation and deallocation.
- Makefile Usage: Created a Makefile for project compilation and management.
- Git Version Control: Managed project versions and collaborated through Git repositories.