15Galan / Libft

"Mi primera librería"

Home Page:https://projects.intra.42.fr/42cursus-libft/antgalan

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Banner (claro) Banner (oscuro)

Este proyecto consiste en programar una librería en C.

La librería tendrá un montón de funciones de propósito general en las que se apoyarán mis programas.



Parte obligatoria

Nombre del programa libft.a
Archivos a entregar Makefile, libft.h, *.c
Makefile NAME, all, clean, fclean, re
Elementos autorizados write(), malloc(), free()
Descripción Escribe una librería que contenga la función ft_printf() que imite la función printf() original.

Consideraciones técnicas

  • Declarar variables globales está prohibido.
  • Si necesitas separar una función compleja en varias, recuerda usar static.
  • Pon todos tus archivos en la raíz de tu repositorio.
  • Se prohibe entregar archivos no utilizados.
  • Todos los archivos .c deben compilarse con las flags -Wall -Werror -Wextra.
  • Debes utilizar el comando ar para generar la librería(libtool está prohibido).
  • Tu libft.a tiene que ser creado en la raíz del repositorio.

Parte 1 - Funciones de libc

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_.

Deberás escribir tus propias funciones implementando las siguientes funciones originales.

No requieren de funciones autorizadas:

isalpha() isdigit() isalnum()
isascii() isprint() strlen()
memset() bzero() memcpy()
memmove() strlcpy() strlcat()
toupper() tolower() strchr()
strrchr() strncmp() memchr()
memcmp() strnstr() atoi()

Requieren utilizar malloc():

calloc() strdup()

Parte 2 - Funciones adicionales

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:

Nombre de la función Descripción
ft_substr() Construye un substring de otro string.
ft_strjoin() Construye un string como resultado de concatenar 2 strings.
ft_strtrim() Elimina todos los caracteres de un string, de entre un conjunto de caracteres, hasta encontrar un carácter no perteneciente a dicho conjunto de caracteres.
ft_split() Construye un array de strings resultante de separar un string en substrings utilizando un carácter como delimitador.
ft_itoa() Genera una string que representa el valor del entero recibido como argumento.
ft_strmapi() Aplica una función a cada carácter de un string.
ft_striteri() Aplica una función a cada carácter de un string con el índice del carácter.
ft_putchar_fd() Imprime un carácter en un descriptor de archivo específico.
ft_putstr_fd() Imprime un string en un descriptor de archivo específico.
ft_putendl_fd() Imprime un string en un descriptor de archivo específico, seguido de un salto de línea.
ft_putnbr_fd() Imprime un entero en un descriptor de archivo específico.

Parte bonus

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, o NULL si nodo es el último.

Implementa las siguientes funciones para manipular listas:

Nombre de la función Descripción
ft_lstnew() Crea un nuevo nodo con el contenido indicado y con next apuntando a NULL.
ft_lstadd_front() Añade un nuevo nodo al inicio de una lista.
ft_lstsize() Cuenta el número de nodos de una lista.
ft_lstlast() Busca el último nodo de la lista.
ft_lstadd_back() Añade un nuevo nodo al final de una lista.
ft_lstdelone() Elimina un nodo de una lista.
ft_lstclear() Elimina una lista al completo.
ft_lstiter() Recorre la lista y aplica una función al contenido de cada nodo.
ft_lstmap() Recorre la lista y aplica una función al contenido de cada nodo.

About

"Mi primera librería"

https://projects.intra.42.fr/42cursus-libft/antgalan


Languages

Language:C 97.7%Language:Makefile 2.3%