About • How to use • Mandatory • Bonus • Norminette • License
El primer proyecto en 42, libft, consiste en aprender cómo funcionan las funciones estándar de la programación C escribiéndolas desde cero y creando una biblioteca personal. Este proyecto es vital ya que la biblioteca se utilizará en asignaciones futuras en 42. Tendrás que programar una librería en C. Tu librería tendrá un montón de funciones de propósito general en las que se apoyarán tus programas.
Click aquí para ver el PDF del proyecto
git clone https://github.com/zafraedu/42-libft.git
cd 42-libft
make#include "/libft.h" Reemplaza
/libft.hpor la ruta exacta donde se encuentra la librería en tu proyecto.
make- Compila los archivos mandatory de libft y genera libft.a;make bonus- Compila los archivos bonus y los agrega al libft.a;make clean- Eliminas todos los objetos (*.o) generados al compilar;make fclean- Elimina todos los objetos más el libft.a;make re- usamake fclean+make;
Deberás rehacer algunas funciones de la libc. Tus funciones tendrán los mismos prototipos e implementarán los mismos comportamientos que las funciones originales.
Deberán ser tal y como las describe el man, la única diferencia será la nomenclatura: empezarán con el prefijo ft_.
| Function | Description |
|---|---|
| ft_isalpha | verifica si el caracter c es alfabetico |
| ft_isdigit | verifica si el caracter c es numerico |
| ft_isalnum | verifica si el caracter c es alfabetico o numerico |
| ft_isascii | verifica si el caracter c está en la tabla ascii |
| ft_isprint | verifica si el caracter c es imprimible |
| ft_strlen | calcula la longitud de la cadena str |
| ft_memset | cambia los valores de los size primeros datos de str por c |
| ft_bzero | convierte en nulo los valores de los size primeros datos de str |
| ft_memcpy | copia los primeros size valores de str por c |
| ft_memmove | copia los primeros size valores de src a dest (hasta si se superponen) |
| ft_srtlcpy | copia los primeros size caracteres de src a dest |
| ft_strlcat | concatena src en dest hasta que este llegue a su maximosize |
| ft_toupper | convierte el caracter c en mayuscula |
| ft_tolower | convierte el caracter c en minuscula |
| ft_strchr | busca la primera aparición del caracter c en la cadena str |
| ft_strrchr | busca la última aparición del caracter c en la cadena str |
| ft_strncmp | compara los primeros size de caracteres de las cadenas s1 y s2 |
| ft_memchr | busca la primera aparición del byte c en str hasta el tamaño maximosize |
| ft_memcmp | compara los primeros size de datos de s1 y s2 |
| ft_strnstr | busca la primera aparición de la subcadena needle en la cadena haystack |
| ft_atoi | convierte str en un int |
| ft_calloc | asigna Mermoria Dinamica a una string empezada por datos nulos |
| ft_strdup | asigna MD a una string que contien str |
Deberás desarrollar un conjunto de funciones que, o no son de la librería *libc, o lo son pero de una forma distinta.
Implementarás las siguientes funciones:
| Function | Description |
|---|---|
| ft_substr | asigna MD a una string creada a partir del indicestart de s con la longitudlen |
| ft_strjoin | asigna MD a una string creada a partir de la concatenación de s1 cocn s2 |
| ft_strtrim | asigna MD a una string que contiene str sin los caracteres set |
| ft_split | asigna MD a un array de strings al separar la string s en substrings con el caracter c como delimitador |
| ft_itoa | convierte un n int a una string MD |
| ft_striteri | aplica la función f en cada caracter de la cadena s |
| ft_putchar_fd | imprime el caracter c al fd |
| ft_putstr_fd | imprime la string s al fd |
| ft_putendl_fd | imprime s al fd con un salto de linea al final |
| ft_putnbr_fd | imprime el numero n al fd |
MD - Memoria Dinamica fd - file descriptor
Las funciones para manipular memoria y strings son muy útiles... Pero pronto descubrirás que la manipulación de listas lo es incluso más.
Deberás utilizar la siguiente estructura para representar un nodo de tu lista.
Añade la declaración a tu archivo libft.h:
typedef struct s_list
{
void *content;
struct s_list *next;
} t_list;content: la información contenida por el nodo, que permite guardar cualquier tipo de información.next: la dirección del siguiente nodo, oNULLsi nodo es el último.
Implementa las siguientes funciones para manipular listas:
| Function | Description |
|---|---|
| ft_lstnew | crea un nuevo nodo y establece su contenido content y puntero siguiente next |
| ft_lstadd_front | añade el nodo new al principio de la lista *lst |
| ft_lstsize | cuenta el numero de nodos que hay en la lista *lst |
| ft_lstlast | va al ultimo nodo de la lista*lst |
| ft_lstadd_back | añade el nodo new al final de la lista **lst |
| ft_lstdelone | elimina el nodo de una lista y libera la memoria asociada a dicho nodo |
| ft_lstclear | elimina todos los nodos de una lista y libera la memoria asociada a dichos nodos |
| ft_lstiter | aplica la función a cada elementocontent de la lista enlazadalst |
| ft_lstmap | crea una nueva lista enlazada aplicando la funcion f a cada elemento de la lista original |
En 42 School, se espera que casi todos los proyectos se escriban de acuerdo con la Norma, que es el estándar de codificación de la escuela.
- 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
- ...
42 NORMA información sobre las normas de código de 42. PDF
Este trabajo se publica bajo los términos de 42 Unlicense.
