An open API service indexing awesome lists of open source software.

https://github.com/f-corvaro/libft

"A solid foundation for system programming in C."
https://github.com/f-corvaro/libft

125 42project 42rome 42school c cprogramming libft makefile

Last synced: 3 months ago
JSON representation

"A solid foundation for system programming in C."

Awesome Lists containing this project

README

        



Libft


"A solid foundation for system programming in C."



subject
GitHub code size in bytes
Code language count
GitHub top language
GitHub last commit

Index



Introduction

Folder Structure

Contents Overview

Building the Library

  Visual Guide to Running Tests

Evaluation Process

  Pre-Submission Testing

  Correction Sheet

  Moulinette Feedback

Acknowledgments

Developed Skills

Support and Contributions

Author



## Introduction

The journey at 42 Schools begins with this foundational project. It challenges students to reimplement certain standard C library functions, along with other utility functions, and compile them into a static library. This serves as a crucial resource for future projects. Adherence to the Norminette coding standards and passing the Moulinette tests are key aspects of this project, ensuring that both peers and automated systems will evaluate your work.

Explore my complete static C library [here](https://github.com/f-corvaro/my_static_C_library).

This project demands a solid understanding of the C programming language, including data types, loops, conditionals, functions, and memory management. Students must also develop proficiency in debugging, testing, and documentation to ensure their code is reliable and understandable. Mastery of these skills is essential for tackling the complexities of software development and contributes significantly to the success in the Libft project and beyond.



## Folder Structure

```
.
├── 00-libft
│ ├── libft
│ │ ├── ft_atoi.c
│ │ ├── ft_bzero.c
│ │ ├── ft_calloc.c
│ │ ├── ft_isalnum.c
│ │ ├── ft_isalpha.c
│ │ ├── ft_isascii.c
│ │ ├── ft_isdigit.c
│ │ ├── ft_isprint.c
│ │ ├── ft_itoa.c
│ │ ├── ft_lstadd_back.c
│ │ ├── ft_lstadd_front.c
│ │ ├── ft_lstclear.c
│ │ ├── ft_lstdelone.c
│ │ ├── ft_lstiter.c
│ │ ├── ft_lstlast.c
│ │ ├── ft_lstmap.c
│ │ ├── ft_lstnew.c
│ │ ├── ft_lstsize.c
│ │ ├── ft_memchr.c
│ │ ├── ft_memcmp.c
│ │ ├── ft_memcpy.c
│ │ ├── ft_memmove.c
│ │ ├── ft_memset.c
│ │ ├── ft_putchar_fd.c
│ │ ├── ft_putendl_fd.c
│ │ ├── ft_putnbr_fd.c
│ │ ├── ft_putstr_fd.c
│ │ ├── ft_split.c
│ │ ├── ft_strchr.c
│ │ ├── ft_strdup.c
│ │ ├── ft_striteri.c
│ │ ├── ft_strjoin.c
│ │ ├── ft_strlcat.c
│ │ ├── ft_strlcpy.c
│ │ ├── ft_strlen.c
│ │ ├── ft_strmapi.c
│ │ ├── ft_strncmp.c
│ │ ├── ft_strnstr.c
│ │ ├── ft_strrchr.c
│ │ ├── ft_strtrim.c
│ │ ├── ft_substr.c
│ │ ├── ft_tolower.c
│ │ ├── ft_toupper.c
│ │ ├── libft.h
│ │ └── Makefile
```

## Contents Overview

This section is divided into four categories:

1. **Libc Functions:** Standard C library functions reimplemented.
2. **Additional Functions:** Useful functions for future projects.
3. **Bonus Functions:** Functions specifically designed for linked list manipulation.
4. **Other Components:** Includes the Makefile and libft.h header file.

Compiling the library generates object `.o` files and the static library file `libft.a`.

| Libc Functions | Additional Functions | Bonus Functions | other Components |
| ------------- | ------------- | ------------- | ------------- |
| [ft_atoi.c](https://github.com/f-corvaro/LIBFT/blob/main/libft/ft_atoi.c)| [ft_itoa.c](https://github.com/f-corvaro/LIBFT/blob/main/libft/ft_itoa.c) | [ft_lstadd_back.c](https://github.com/f-corvaro/LIBFT/blob/main/libft/ft_lstadd_back.c) | [libft.h](https://github.com/f-corvaro/LIBFT/blob/main/libft/libft.h) |
| [ft_bzero.c](https://github.com/f-corvaro/LIBFT/blob/main/libft/ft_bzero.c) | [ft_putchar_fd.c](https://github.com/f-corvaro/LIBFT/blob/main/libft/ft_putchar_fd.c) | [ft_lstadd_front.c](https://github.com/f-corvaro/LIBFT/blob/main/libft/ft_lstadd_front.c) | [makefile](https://github.com/f-corvaro/LIBFT/blob/main/libft/Makefile) |
| [ft_calloc.c](https://github.com/f-corvaro/LIBFT/blob/main/libft/ft_calloc.c) | [ft_putendl_fd.c](https://github.com/f-corvaro/LIBFT/blob/main/libft/ft_putendl_fd.c) | [ft_lstclear.c](https://github.com/f-corvaro/LIBFT/blob/main/libft/ft_lstclear.c) |
| [ft_isalnum.c](https://github.com/f-corvaro/LIBFT/blob/main/libft/ft_isalnum.c) | [ft_putnbr_fd.c](https://github.com/f-corvaro/LIBFT/blob/main/libft/ft_putnbr_fd.c) | [ft_lstdelone.c](https://github.com/f-corvaro/LIBFT/blob/main/libft/ft_lstdelone.c) |
| [ft_isalpha.c](https://github.com/f-corvaro/LIBFT/blob/main/libft/ft_isalpha.c) | [ft_putstr_fd.c](https://github.com/f-corvaro/LIBFT/blob/main/libft/ft_putstr_fd.c) | [ft_lstiter.c](https://github.com/f-corvaro/LIBFT/blob/main/libft/ft_lstiter.c) |
| [ft_isascii.c](https://github.com/f-corvaro/LIBFT/blob/main/libft/ft_isascii.c) | [ft_split.c](https://github.com/f-corvaro/LIBFT/blob/main/libft/ft_split.c) | [ft_lstlast.c](https://github.com/f-corvaro/LIBFT/blob/main/libft/ft_lstlast.c) |
| [ft_isdigit.c](https://github.com/f-corvaro/LIBFT/blob/main/libft/ft_isdigit.c) | [ft_striteri.c](https://github.com/f-corvaro/LIBFT/blob/main/libft/ft_striteri.c) | [ft_lstmap.c](https://github.com/f-corvaro/LIBFT/blob/main/libft/ft_lstmap.c) |
| [ft_isprint.c](https://github.com/f-corvaro/LIBFT/blob/main/libft/ft_isprint.c) | [ft_strjoin.c](https://github.com/f-corvaro/LIBFT/blob/main/libft/ft_strjoin.c) | [ft_lstnew.c](https://github.com/f-corvaro/LIBFT/blob/main/libft/ft_lstnew.c) |
| [ft_memchr.c](https://github.com/f-corvaro/LIBFT/blob/main/libft/ft_memchr.c) | [ft_strmapi.c](https://github.com/f-corvaro/LIBFT/blob/main/libft/ft_strmapi.c) | [ft_lstsize.c](https://github.com/f-corvaro/LIBFT/blob/main/libft/ft_lstsize.c) |
| [ft_memcmp.c](https://github.com/f-corvaro/LIBFT/blob/main/libft/ft_memcmp.c) | [ft_strtrim.c](https://github.com/f-corvaro/LIBFT/blob/main/libft/ft_strtrim.c) |
| [ft_memcpy.c](https://github.com/f-corvaro/LIBFT/blob/main/libft/ft_memcpy.c) | [ft_substr.c](https://github.com/f-corvaro/LIBFT/blob/main/libft/ft_substr.c) |
| [ft_memmove.c](https://github.com/f-corvaro/LIBFT/blob/main/libft/ft_memmove.c) |
| [ft_memset.c](https://github.com/f-corvaro/LIBFT/blob/main/libft/ft_memset.c) |
| [ft_strchr.c](https://github.com/f-corvaro/LIBFT/blob/main/libft/ft_strchr.c) |
| [ft_strdup.c](https://github.com/f-corvaro/LIBFT/blob/main/libft/ft_strdup.c) |
| [ft_strlcat.c](https://github.com/f-corvaro/LIBFT/blob/main/libft/ft_strlcat.c) |
| [ft_strlcpy.c](https://github.com/f-corvaro/LIBFT/blob/main/libft/ft_strlcpy.c) |
| [ft_strlen.c](https://github.com/f-corvaro/LIBFT/blob/main/libft/ft_strlen.c) |
| [ft_strncmp.c](https://github.com/f-corvaro/LIBFT/blob/main/libft/ft_strncmp.c) |
| [ft_strnstr.c](https://github.com/f-corvaro/LIBFT/blob/main/libft/ft_strnstr.c) |
| [ft_strrchr.c](https://github.com/f-corvaro/LIBFT/blob/main/libft/ft_strrchr.c) |
| [ft_tolower.c](https://github.com/f-corvaro/LIBFT/blob/main/libft/ft_tolower.c) |
| [ft_toupper.c](https://github.com/f-corvaro/LIBFT/blob/main/libft/ft_toupper.c) |



## Building the Library

To compile the library, utilize the following command:

```bash
make
```

For a detailed list of commands available within the `make` utility, execute:

```bash
make info
```

### Visual Guide to Running Tests







## Evaluation Process

### Pre-Submission Testing

To ensure your project is ready for submission and peer reviews, it's recommended to test it using the [Supreme Tester](https://github.com/FranFrau/Supreme-Tester-Libft) provided by [@FranFrau](https://github.com/FranFrau).

### Correction Sheet

For a comprehensive review of what will be checked during evaluation, refer to the correction sheet below:





### Moulinette Feedback

After submission, the Moulinette (an automated grading system) will evaluate your project. You can view the results and feedback here:




## Acknowledgments

- **[@dieremy](https://github.com/dieremy)**: Helped with testing and resolving leaks in functions. Additionally, provided an introduction to the project, explaining various functions and theoretical aspects.
- **[@MirkokriM](https://github.com/MirkokriM)**: Inspired the idea for the GIF.



## Developed Skills






## Support and Contributions


If you find this repository helpful, please consider starring it to show your support. Your support is greatly appreciated!




## Author



Email
Github
Linkedin
Slack