Skip to content

iW90/libft

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

42 Cursus - libft

completion-with-bonus-badge

O objetivo deste primeiro projeto é criar uma biblioteca totalmente desenvolvida em C e aprender como funcionam as funções mais comuns na programação, envolvendo manipulação de strings, conversões de tipos, listas encadeadas, dentre outras. Essas funções são implementadas do zero, sem o auxílio de bibliotecas externas, sendo exceções apenas o uso do write (para saída de dados) e o malloc (para alocamento de memória). E uma vez criada, esta biblioteca será usada nos projetos futuros, uma vez que o auxílio de bibliotecas externas segue proibido como regra.

Funções

Manipulação e verificação de Chars:

Implementação Manual Protótipo
——————— ————— ——————————————————————————————————
ft_isalpha isalpha int ft_isalpha(int c);
ft_isdigit isdigit int ft_isdigit(int c);
ft_isalnum isalnum int ft_isalnum(int c);
ft_isascii isascii int ft_isascii(int c);
ft_isprint isprint int ft_isprint(int c);
ft_isspace isspace int ft_isspace(int c);
ft_toupper toupper int ft_toupper(int c);
ft_tolower tolower int ft_tolower(int c);

Manipulação e verificação de strings:

Implementação Manual Protótipo
——————— ————— ——————————————————————————————————
ft_strlen strlen size_t ft_strlen(const char *src);
ft_strlcpy strlcpy size_t ft_strlcpy(char *dst, const char *src, size_t len);
ft_strlcat strlcat size_t ft_strlcat(char *dst, const char *src, size_t len);
ft_strchr strchr char *ft_strchr(const char *src, int c);
ft_strrchr strrchr char *ft_strrchr(const char *src, int c);
ft_strncmp strncmp int ft_strncmp(const char *stra, const char *strb, size_t n);
ft_strnstr - char *ft_strnstr(const char *big, const char *little, size_t n);
ft_substr - char *ft_substr(char const *s, unsigned int start, size_t len);
ft_strjoin - char *ft_strjoin(char const *s1, char const *s2);
ft_strtrim - char *ft_strtrim(char const *s1, char const *set);
ft_split - char **ft_split(char const *s, char c);
ft_strmapi - char *ft_strmapi(char const *s, char (*f)(unsigned int, char));
ft_striteri - void ft_striteri(char *s, void (*f)(unsigned int, char*));

Manipulação de memória:

Implementação Manual Protótipo
——————— ————— ——————————————————————————————————
ft_bzero bzero void ft_bzero(void *s, size_t n);
ft_calloc calloc void *ft_calloc(size_t nitems, size_t size);
ft_memset memset void *ft_memset(void *src, int c, size_t n);
ft_memcpy memcpy void *ft_memcpy(void *dst, const void *src, size_t n);
ft_memchr memchr void *ft_memchr(const void *src, int c, size_t n);
ft_memcmp memcmp int ft_memcmp(const void *stra, const void *strb, size_t n);
ft_memmove memmove void *ft_memmove(void *dst, const void *src, size_t n);
ft_strdup strdup char *ft_strdup(const char *s1);

Conversores:

Implementação Manual Protótipo
——————— ————— ——————————————————————————————————
ft_atoi atoi int ft_atoi(const char *strNum);
ft_itoa - char *ft_itoa(int n);

Saídas:

Implementação Manual Protótipo
——————— ————— ——————————————————————————————————
ft_putchar_fd - void ft_putchar_fd(char c, int fd);
ft_putstr_fd - void ft_putstr_fd(char *s, int fd);
ft_putendl_fd - void ft_putendl_fd(char *s, int fd);
ft_putnbr_fd - void ft_putnbr_fd(int n, int fd);

Funções Bônus

Listas encadeadas:

Implementação Manual Protótipo
——————— ————— ——————————————————————————————————
ft_lstnew - t_list *ft_lstnew(void *content);
ft_lstadd_front - void ft_lstadd_front(t_list **lst, t_list *new);
ft_lstsize - int ft_lstsize(t_list *lst);
ft_lstlast - t_list *ft_lstlast(t_list *lst);
ft_lstadd_back - void ft_lstadd_back(t_list **lst, t_list *new);
ft_lstdelone - void ft_lstdelone(t_list *lst, void (*del)(void *));
ft_lstclear - void ft_lstclear(t_list **lst, void (*del)(void *));
ft_lstiter - void ft_lstiter(t_list *lst, void (*f)(void *));
ft_lstmap - t_list *ft_lstmap(t_list *lst, void *(*f)(void *), void (*del)(void *));

Compilação e Execução

No terminal, digite:

make

Para testar a biblioteca, é necessário criar uma main.c com o cabeçalho #include "libft.h" e depois compilar com a libft.a:

cc -Wall -Werror -Wextra -I ./includes -c main.c -o ./objs/main.o
cc -Wall -Werror -Wextra ./objs/main.o libft.a

Sobre os Manuais

O formato geral de nomenclatura das páginas de manual no Linux segue a convenção nome(seção). A seção do manual indica a categoria à qual o tópico pertence. Seções:

  • Seção 1: São os comandos executáveis do usuário (por exemplo, comandos de shell, utilitários do sistema).
  • Seção 2: São as chamadas de sistema do kernel.
  • Seção 3: São as bibliotecas de funções do C.
  • Seção 3p: São as funções de bibliotecas POSIX (Portable Operating System Interface).
  • Seção 4: São os arquivos especiais (por exemplo, arquivos de dispositivo).
  • Seção 5: São os formatos de arquivo e convenções.
  • Seção 7: São as convenções, protocolos e padrões de sistema.
  • Seção 8: São os comandos e utilitários do sistema administrativo.

Testers Utilizados

Releases

No releases published

Packages

No packages published