Skip to content

42 first common core project - make your own C library

License

Notifications You must be signed in to change notification settings

Rapcampo/42_libft

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Table of contents

Overview

This is the first project of the common core for the 42 programming school, as such it follow general guidelines that must be complient with the school ☠️norm☠️ for readability of the code. The following are the general rules for this project.

written in C and accordance with the norm

  • Must be completely error free, no seg fault, bus error, double free... undefined is ok, if it happens once.
  • No memory leaks! always free heap memory properly!
  • Must submit a makefile if required, the make file must compile with the usual flags -Werror, -Wextra, -Wall, Makefile must not relink.
  • Must contain the rules $(name), all, clean, fclean and re.
  • If bonuses are wanted, must include a rule in the makefile.
  • Bonuses must be in a different file "_bonus.c or _bonus.h" if your project allows you to use your libft folder with its makefile. your project makefile must compile the library by using its makefile then the project.
  • It is encouraged to create your own test programs.

Mandatory part

  • Files: Makefile, libft.h, ft_*.c
  • Makefile: NAME, all, clean, fclean, re.
  • External functions: Malloc, Free, Write (Depeding on the project).
  • Write your own library: a collection of useful functions that will be a useful tool for your cursus;
     

Technical considerations

 

  • Declaring global variables is forbidden.
  • If you need helper functions to split a more complex function, they must be defined as static. so their scope becomes limited to the appropriate file.
  • Place all the files at the root of the repository.
  • Unused files are forbidden.
  • Every .c file must be compiled with the flags -Wall -Wextra -Werror.
  • Must use the command ar to create your library. using libtool is forbidden.
  • Your libft.a has to be created at the root of your repository.
     

Functions to be included

  • Redo a set of libc functions. same prototype, same behaviours. only difference must be their names.
  • They must use the ft_ prefix.

Function Breakdown

For each function there will be a brief description with a link to a detailed wiki style overview of how the function works (work in progress...). This detailed description is done with the porpuse of a better understanding of how each of these function works as well as the structure of their syntax.

Mandatory Functions

<ctype.h> Functions

Function Name Description Status
ft_isalpha Checks for an alphabetic character, either lowercase or uppercase. ✔️
ft_isdigit Checks for a digit between 0 through 9. ✔️
ft_isalnum Checks if the character is alphanumeric. ✔️
ft_isascii Checks if the character is part of the ASCII table. ✔️
ft_isprint Checks whether a character is printable. ✔️
ft_toupper Coverts a character to uppercase. ✔️
ft_tolower Converts a character to lowercase. ✔️

<string.h> Functions

Function Name Description Status
ft_memset Fill memory with a constant byte. ✔️
ft_strlen Takes a string and return its length. ✔️
ft_bzero Erases the data in the n byes of the memory. ✔️
ft_memcpy Copy memory area. (does not support overlap) ✔️
ft_memmove Copy memory area. (supports overlapping) ✔️
ft_strlcpy Size bound string copying. ✔️
ft_strlcat Size bound string concatenation. ✔️
ft_strchr Locate the first occurance of a character in a given string. ✔️
ft_strchrr Locate the last occurance of a character in a given string. ✔️
ft_strncmp Compare two strings, in a given N size. ✔️
ft_memchr Locate a character in memory area. ✔️
ft_memcmp Compare memory areas. ✔️
ft_strnstr Locates a substring in a given string ✔️
ft_strdup Creates a duplicate of the input string ✔️

<stdlib.h> Functions

Function Name Description Status
ft_atoi Converts a string into an integer. ✔️
ft_calloc Allocates a memory area and sets its bytes' values to 0 ✔️

Non-Standard Functions

Function Name Description Status
ft_substr Returns a substring from a string ✔️
ft_strjoin Concatenates two strings. ✔️
ft_strtrim Trims the beginning and end of a string with a specific set of characters. ✔️
ft_split Split a string into smaller strings using a character as delimiter. ✔️
ft_itoa Converts integer numbers into a string. ✔️
ft_strmapi Copies a string and applies a function to each character of the new allocated copy string ✔️
ft_striteri Applies a given function to each character of a string. ✔️
ft_putchar_fd Outputs a char into a file descriptor. ✔️
ft_putstr_fd Outputs a string into a file descriptor. ✔️
ft_putendl_fd Outputs a string into a file descriptor, followed by a new line ✔️
ft_putnbr_fd Outputs a number to a file descriptor. ✔️

Bonus Functions

Function Name Description Status
ft_lstnew Creates a new node. ✔️
ft_lstadd_front Adds a node to the beginning of the list. ✔️
ft_lstsize Counts the number of nodes in a list. ✔️
ft_lstlast Returns the last node of the list. ✔️
ft_lstadd_back Adds a node at the end of a list. ✔️
ft_lstdelone Deletes and frees a node of the list. ✔️
ft_lstclear Deletes and clear the list. ✔️
ft_lstiter Applies a function to each node of the list. ✔️
ft_lstmap Applies a function to each node of the list, and creates a new list from the results of the function applied. ✔️

The Norm

The norm is set of rules stipulated by 42 for the pedagogical needs of the school. It enforces these rules through an open source tool called "Norminette", which the students can run to check if their code is complaint. Some of these rules are:

- No for, do...while, switch, case, goto, ternary operators and variable-length arrays are allowed
- Each function must be a maximum of 25 lines, not counting the function's curly brackets
- Each line must be at most 80 columns wide, comments included
- A function can take 4 named parameters maximum
- No assigns and declarations in the same line (unless static)
- You can't declare more than 5 variables per function
- 4 space tabulations
- and so on...
  • Norminette - The tool to enforce the 42 style of coding.
  • 42 Header - The header used by 42. To be used with Vim.

Releases

No releases published

Packages

No packages published