Para leer la descripción del proyecto en Español, saltese hasta Libft Español
.
libft
is a library of C functions rewritten from the standard library, as well as some additional functions that can be useful for C projects.
libft
is the first project in the Core-Curriculum within the "42" programming school, this is my interpretation of the assignment with some extra functions that I will add as needed.
To use libft
, download the library in the root of your project using the following command line
git clone git@github.com:JorFik/libft.git
git clone https://github.com/JorFik/libft.git
gh repo clone JorFik/libft
This will create a directory called ``libft/`, enter with the command
cd libft
Once inside, create the static library libft.a
with the following command
make
libft.a
will be inside libft/
, now you just need to compile your project including libft/libft.a
and adding the header files
that contain the functions you want to use, all header files
are inside libft/h_files
.
#include "libft/h_files/libft.h"
For more information about the functions, see directly in the corresponding header file
or for a quick description read the Functions section below.
To find the appropriate header file
see Categories below.
Inside libft
there are functions for all kinds of applications, so I have decided to divide them into different header files
, to make finding the right function efficient and easy, as well as giving the option to include only the necessary functions.
The Categories are divided as follows:
- Functions for character manipulation, defined in
libft_char_manipulation.h
. - Functions for integer manipulation, defined in
libft_int_manipulation.h
. - Functions for manipulation of a
linked list
, defined together with the functions inlibft_lst_manipulation.h
. - Functions for dynamic memory allocation, defined in
libft_mem_allocation.h
. - Functions that check memory, defined in
libft_mem_checks.h
. - Functions for memory manipulation, defined in
libft_mem_manipulation.h
. - Functions that check a
string
ending in0
, defined inlibft_str_checks.h
. - Functions to manipulate a
string
, defined inlibft_str_manipulation.h
. - Functions for checking the type of the provided value, defined in
libft_type_checks.h
. - Functions for writing different variables to a
file descriptor
provided to the function, defined inlibft_write_fd.h
.
There are 3 additional header files
to those previously described that are not a category per se, and are as follows
ft_printf.h
: Theft_printf()
function, being more complex than the previous ones, occupies its ownheader file
for its operation.get_next_line_bonus.h
:get_next_line()
is a version with the bonuses described in theget_next_line
project of code school 42, hence all its related files include the_bonus
suffix. As withft_printf()
being a complex function it requires its ownheader file
.libft.h
: Thisheader file
is all the previous ones together in a singleheader file
to be able to include all the functions comfortably.
The libft
library includes the following functions (for more detailed information read the header file
, it includes syntax, parameter description, notes, and more relevant information):
ft_printf()
: Print astring
including variables of different types.get_next_line()
: Read the text of a file descriptor until acharacter
n
is encountered or the end of the file is reached.
ft_toupper()
: Transforms achar
from lowercase to uppercase.ft_tolower()
: Transforms achar
from uppercase to lowercase.
ft_itoa()
: Transforms anint
value to itsstring
counterpart.
ft_lstnew()
: Creates a new node typet_list
.ft_lstadd_front()
: Adds a node to the front of the list.ft_lstadd_back()
: Adds a node to the end of the list.ft_lstsize()
: Counts the number of nodes belonging to the list.ft_lstlast()
: Scrolls down the list until the last member is reached.ft_lstdelone()
: Deletes the contents of the node with the provided function, then frees the node withfree()
from the standard library.ft_lstclear
: Completely removes the list, using the provided function for the content andfree()
to free each of the nodes.ft_lstiter()
: Iterates the given function on each node of the list.ft_lstmap()
: Iterate thef()
function on each node in the list, saving the result in a new list, if something goes wrong, use thedel()
function to remove the contents of the new nodes, andfree()
to remove all nodes from the new list.
ft_calloc
: Performs a dynamic memory allocation and initializes all values to 0.ft_free_n_null()
: Check if the given pointer is different fromNULL
, if so performfree()
of the standard library and move thepointer
toNULL
.ft_close
: Checks if thefile descriptor
is valid, if so closes it usingclose()
from the standard library.
ft_memchr
: Searches for the first occurrence of the givencharacter
within the described memory range.ft_memcmp()
: Compares two memory ranges, returning0
if they are equal,>0
or<0
if they are different.
ft_memset()
: This function takes a memory block and sets it to the given value.ft_memcpy()
: This function copies a source memory block to the destination address.ft_memmove()
: This function is similar toft_memcpy()
, but handles cases where the source and destination overlap.ft_memmove()
avoids this problem by copying the data in an order that depends on the relationship between src and dest.ft_bzero()
: Sets a memory block at the given address to 0.
ft_strchr()
: Searches for the first occurrence of the givencharacter
within thestring
. If found, returns the address of that location. If not found, returnsNULL
.ft_strrchr()
: This function is similar toft_strchr()
, but starts searching from the end of thestring
src. It returns the address of the last place where the
characterc appears. If not found, it returns
NULL`.ft_strncmp()
: Compares the 2 given strings up ton
characters or until a difference is found. Returns the difference or0
if they are equal.ft_strnstr()
: This function searches for the first occurrence of thearray
needle
in thearray
haystack
, but does not search beyondlen
characters inhaystack
. If it findsneedle
, it returns the start address ofneedle
. If not found, it returnsNULL
.
ft_strlen()
: Counts the number of characters in astring
.ft_strlcpy()
: Copies astring
from source to destination up to a specified size.ft_strlcat()
: Concatenates a sourcestring
to the end of a destinationstring
, up to a specified size.ft_atoi()
: Converts astring
to an integer.ft_strdup()
: Creates a copy of astring
.ft_substr()
: Extracts a substring of a givenstring
from a specified index with a given length.ft_strjoin()
: Joins two strings into a newstring
.ft_strtrim()
: Removes the characters defined inset
from the beginning and end of thestring
src
, and stores the result in a newstring
.ft_split()
: Splits astring
into astring array
using thechar
c
as delimiter.ft_strmapi()
: Applies a function to each character of astring
and stores the results in a newstring
.ft_striteri()
: Applies a function to each character in astring
.
ft_isalpha()
: Checks if the given character is a letter in theASCII
table.ft_isdigit()
: Checks if the given character is a digit in theASCII
table.ft_isalnum()
: Check if the given character is a letter or a digit in theASCII
table.ft_isascii()
: Check if the given character is in theASCII
table.ft_isprint()
: Check if the given character is printable according to theASCII
table.
ft_putchar_fd()
: Writes achar
to a given file descriptor.ft_putstr_fd()
: Writes astring
to a given file descriptor.ft_putendl_fd()
: Writes astring
followed by a newline to a given file descriptor.
libft
es una biblioteca de funciones en C reescritas de la librería estándar, así como algunas funciones adicionales que pueden ser útiles para los proyectos en C.
libft
es el primer proyecto en el Core-Curriculum dentro de la escuela de programación "42", esta es mi interpretación de la asignación con algunas funciones extras que iré agregando conforme sean necesarias.
Para usar libft
, descarga la biblioteca en la raíz de tu proyecto usando la siguiente línea de comandos
git clone git@github.com:JorFik/libft.git
git clone https://github.com/JorFik/libft.git
gh repo clone JorFik/libft
Esto creará un directorio llamado libft/
, entra con el comando
cd libft
Una vez dentro crea la librería estática libft.a
con el siguiente comando
make
libft.a
se encontrará en la raíz de tu proyecto, ahora solo necesitas compilar tu proyecto incluyendo libft.a
y agregando los header files
que contengan las funciones que quieras usar, todos los header files
están dentro de libft/h_files
#include "libft/h_files/libft.h"
Para más información sobre las funciones, ver directamente en el header file
correspondiente o para una descripción rápida, leer la sección Funciones a continuación.
Para encontrar el header file
apropiado ver en Categorías a continuación.
Dentro de libft
se encuentran funciones para todo tipo de aplicaciones, por lo que he decidido dividirlas en diferentes header files
, para que encontrar la función adecuada sea eficiente y fácil, además de dar la opción de incluir únicamente las funciones necesarias.
- Funciones para la manipulación de caracteres, definidas en
libft_char_manipulation.h
- Funciones para la manipulación de enteros, definidas en
libft_int_manipulation.h
- Funciones para la manipulación de una
linked list
, definida junto a las funciones enlibft_lst_manipulation.h
- Funciones para la allocación dinámica de memoria, definidas en
libft_mem_allocation.h
- Funciones que checan la memoria, definidas en
libft_mem_checks.h
- Funciones para la manipulación de memoria, definidas en
libft_mem_manipulation.h
- Funciones que chequen un
string
terminado en\0
, definidas enlibft_str_checks.h
- Funciones para la manipulación de un
string
, definidas enlibft_str_manipulation.h
- Funciones para checar el tipo de valor proporcionado, definidas en
libft_type_checks.h
- Funciones para la escritura de distintas variables a un
file descriptor
proporcionado a la función, definidas enlibft_write_fd.h
Hay 3 header files
adicionales a los previamente descritos que no son una categoría per se, y son los siguientes
ft_printf.h
: La funciónft_printf()
al ser más compleja que las anteriores, ocupa su propioheader file
para su funcionamiento.get_next_line_bonus.h
:get_next_line()
es una versión con los bonus descritos en el proyectoget_next_line
de la escuela de código 42, de ahí que todos sus archivos relacionados incluyen el sufijo_bonus
. El igual que conft_printf()
al ser una función compleja requiere de su propioheader file
.libft.h
: Esteheader file
es la recopilación de todos los anteriores para poder incluir todas las funciones cómodamente.
La biblioteca libft
incluye las siguientes funciones (para información más detallada leer el header file
, ahí se incluye syntax, descripción de parámetros, notas, y más información relevante):
ft_printf()
: Imprime unstring
que incluyendo variables de distintos tipos.get_next_line()
: Leerá el de texto de un descriptor de archivo hasta encontrarse uncarácter
\n
o alcanzar el final del archivo.
ft_toupper()
: Transforma unchar
de minúscula a mayúscula.ft_tolower()
: Transforma unchar
de mayúscula a minúscula.
ft_itoa()
: Transforma un valorint
a su homólogo enstring
.
ft_lstnew()
: Crea un nuevo nodo tipot_list
.ft_lstadd_front()
: Agrega un nodo al inicio de la lista.ft_lstadd_back()
: Agrega un nodo al final de la lista.ft_lstsize()
: Cuenta la cantidad de nodos pertenecientes a la lista.ft_lstlast()
: Avanza en la lista hasta llegar al último miembro.ft_lstdelone()
: Elimina el contenido del nodo con la función proporcionada, luego libera el nodo confree()
de la librería estándar.ft_lstclear
: Elimina por completo la lista, usando la función proporcionada para el contenido yfree()
para liberar cada uno de los nodos.ft_lstiter()
: Itera la función dada en cada nodo de la lista.ft_lstmap()
: Itera la funciónf()
en cada nodo de la lista, guardando el resultado en una nueva lista, si algo sale mal, usa la funcióndel()
para eliminar el contenido de los nuevos nodos, yfree()
para eliminar todos los nodos de la nueva lista.
ft_calloc
: Realiza un allocación dinámica de memoria e inicializa todos los valores a 0.ft_free_n_null()
: Checa si el pointer dado es diferente aNULL
, de ser así realizafree()
de la librería estándar y mueve elpointer
aNULL
.ft_close
: Checa si elfile descriptor
es válido, de ser así lo cierra usandoclose()
de la librería estándar.
ft_memchr
: Busca por la primera aparición delcarácter
dado dentro del rango de memoria descrito.ft_memcmp()
: Compara dos rangos de memoria, devolviendo0
si son iguales,>0
o<0
si son distintos.
ft_memset()
: Esta función toma un bloque de memoria y lo establece al valor dado.ft_memcpy()
: Esta función copia un bloque de memoria fuente a la dirección destino.ft_memmove()
: Esta función es similar aft_memcpy()
, pero se encarga de los casos en los que la fuente y el destino se superponen.ft_memmove()
evita este problema copiando los datos en un orden que depende de la relación entre src y dest.ft_bzero()
: Establece un bloque de memoria en la dirección dada a 0.
ft_strchr()
: Busca la primera aparición delcarácter
dado dentro delstring
. Si lo encuentra, devuelve la dirección de ese lugar. Si no lo encuentra, devuelveNULL
.ft_strrchr()
: Esta función es similar aft_strchr()
, pero comienza a buscar desde el final delstring
src
. Devuelve la dirección del último lugar donde aparece elcarácter
c. Si no lo encuentra, devuelveNULL
.ft_strncmp()
: Compara las 2 cadenas dadas hastan
caracteres o hasta que encuentre una diferencia. Devuelve la diferencia o0
si son iguales.ft_strnstr()
: Esta función busca la primera aparición delarray
needle
en elarray
haystack
, pero no busca más allá delen
caracteres enhaystack
. Si encuentraneedle
, devuelve la dirección del inicio deneedle
. Si no la encuentra, devuelveNULL
.
ft_strlen()
: Cuenta el número de caracteres en unstring
.ft_strlcpy()
: Copia unstring
de origen a un destino hasta un tamaño especificado.ft_strlcat()
: Concatena unstring
de origen al final de unstring
de destino, hasta un tamaño especificado.ft_atoi()
: Convierte unstring
a un número entero.ft_strdup()
: Crea una copia de unstring
.ft_substr()
: Extrae una subcadena de unstring
dada, desde un índice especificado y con una longitud dada.ft_strjoin()
: Une dos cadenas en un nuevostring
.ft_strtrim()
: Elimina los caracteres definidos enset
del inicio y el final delstring
src
, y guarda el resultado en un nuevostring
.ft_split()
: Divide unstring
en unstring array
usando como delimitador elchar
c
.ft_strmapi()
: Aplica una función a cada carácter de unstring
y almacena los resultados en un nuevostring
.ft_striteri()
: Aplica una función a cada carácter de unstring
.
ft_isalpha()
: Verifica si el carácter dado es una letra en la tablaASCII
.ft_isdigit()
: Verifica si el carácter dado es un dígito en la tablaASCII
.ft_isalnum()
: Verifica si el carácter dado es una letra o un dígito en la tablaASCII
.ft_isascii()
: Verifica si el carácter dado está en la tablaASCII
.ft_isprint()
: Verifica si el carácter dado es imprimible según la tablaASCII
.
ft_putchar_fd()
: Escribe unchar
en un descriptor de archivo dado.ft_putstr_fd()
: Escribe unstring
en un descriptor de archivo dado.ft_putendl_fd()
: Escribe unstring
seguida de una nueva línea en un descriptor de archivo dado.