Skip to content

rlinsdev/42-Libft

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Libft - 42sp

ℹ️ Uma Biblioteca estática em C com funções padrão recodificadas

O que é Libft?

O Primeiro projeto na 42. Consiste em uma biblioteca estática em C com funções padrão da linguagem recodificadas que rodam e compilam usando um Makefile. A biblioteca pode ser usada de apoio em projetos futuros, uma vez que não é permitido o uso das funções originais. Uma vez que tenha terminado o projeto, você pode (e deve) incluir mais funções à sua Libft.

Divisão do projeto

Parte I.

Nessa primeira parte, você deve recodificar um conjunto de funções da libc, como definidas em seu manual (man). Suas funções precisam apresentar o mesmo protótipo e compartamento das originais. Além disso o nome das funções devem apresenar o prefixo “ft_”. Por exemplon, a strlen se torna ft_strlen. **ft_ vem de forty-two(42).

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

Parte II.

Nessa segunda parte, você deve codar um punhado de funções que ou não estão inclusas na libc ou foram incluídas de uma outra forma. Algumas dessas funções podem ser úteis para escrever as funções da parte I.

• substr • strjoin • strtrim • split • itoa • strmapi • striteri • putchar_fd • putstr_fd • putendl_fd • putnbr_fd

Requisitos

⚠️ O projeto deve estar de acordo com a Norma

A Norma é um padrão de programação que define um conjunto de regras a seguir ao escrever um código na 42. A norma aplica-se a todos os projetos C dentro do currículo interno por padrão, e para qualquer projeto onde é especificado. Aqui algumas das regras:
Cada função dever ter no máximo 25 linhas, não contando suas próprias chaves '{}'.

Cada linha deve ter no máximo 80 colunas de largura, comentários incluídos.

Uma função pode ter no máximo 4 parâmetros definidos.

Não podem ser declaradas mais que 5 variáveis por função.

Não é permitido o uso de: for , do...while , switch , case ,  goto  ,
operadores ternários como `?' e VLAs - Matrizes de comprimento variável.

A norminette (como chamamos a norma na 42) é feita em python e é open source.

Além da norma padrão, o projeto tem alguns requisitos próprios

É proibido declarar variáveis globais.

Usar o comando libtool para criar a biblioteca é proibido.

O Makefile deve compilar com as flags -Wall, -Wextra e -Werror

Funções

Essas são as funções presentes na minha Libft atualmente - algumas não fazem parte do subject - já que podemos posteriormente adicionar funções para usar em outros projetos.

Funções da <ctype.h>

ft_isalpha - checa se é um caractere alfabético.

ft_isdigit - checa se é um digito (0 a 9).

ft_isalnum - checa se é um caractere alfanumérico.

ft_isascii - checa se é um caractere que faz parte da tabela ASCII tradicional.

ft_isprint - checa se é um caractere printável.

ft_toupper - converte o caractere para maiúsculo.

ft_tolower - converte o caractere para minúsculo.

Funções da <string.h>

ft_memset - enche o bloco de memória com um mesmo byte.

ft_strlen - calcula o tamanho de uma string.

ft_bzero - preenche uma string com zero.

ft_memcpy - copia uma área de memória.

ft_memmove - copia uma área de memória.

ft_strlcpy - copia uma string para um tamanho especificado.

ft_strlcat - concatena uma string para um um tamanho especificado.

ft_strchr - localiza a primeira ocorrência de um caractere em uma string.

ft_strrchr - localiza a última ocorrência de um caractere em uma string.

ft_strncmp - compara duas strings.

ft_memchr - checa um bloco de memória em busca de um caractere.

ft_memcmp - compara blocos de memória.

ft_strnstr - localiza uma substring dentro de uma string.

ft_strdup - cria uma duplicata da string passada como parâmetro.

Funções da <stdlib.h>

ft_atoi - converte uma string para um inteiro.

ft_calloc - alloca memória e seta o valor de todos os bytes para 0.

Funções não-padrão da linguagem

ft_substr - retorna uma substring de uma string.

ft_strjoin - retorna uma string que é a junção das duas strings passadas como parâmetro.

ft_strtrim - Corta o início e fim de uma string quando achada a sequência de caracteres passada.

ft_split - separa uma string em várias substrings delimitadas por um caractere.

ft_itoa - converte um número em string.

ft_strmapi - aplica uma função a cada caractere de uma string.

ft_striteri - aplica uma função a cada caractere de uma string.

ft_putchar_fd - da como output um caratere para um file descriptor.

ft_putstr_fd - da como output uma string para um file descriptor.

ft_putendl_fd - da como output uma string para um file descriptor, seguido por uma nova linha.

ft_putnbr_fd - da como output um número para um file descriptor.

Makefile

ℹ️ Uma ferramenta de automacão para rodar e compilar seus programas com maior eficiência.

Um Makefile define uma série de tarefas para serem executadas em shell script. Essas tarefas são escritas em um target nesse formato:

target: pré-requisitos
<TAB> receita

Como eu testo?

Para testar o código vamos usar um Tester para a Libft feito pelo @jgambard. Há vários outros bons testers mas hoje vou cobrir apenas esse.

git clone https://github.com/Tripouille/libftTester libftTester

Entre na pasta do Tester e rode o teste mandatório e então o bônus:

cd libftTester
make m
make b

Se você fez tudo corretamente, deve ver algo como isso: image

42 Cursus

A 42 é uma iniciativa educacional global que propõe uma nova forma de aprender tecnologia: sem professores, sem salas de aula, estudantes aprendendo com seus colegas estudantes (Aprendizado peer to peer), com uma metodologia que desenvolve habilidades de computação e da vida. Sem mencionar que é completamente gratuita e aberta para todos, sem pré-requisitos.

As admissões na 42 são diferentes de outras escolas. Usamos um processo de admissão baseado em mérito. O passo final no processo é a Piscina - parte parte do processo seletivo que requer 4 semanas de código intenso e imersivo. Não é necessário experiência anterior em programação.

Você pode conferir mais sobre o processo de admissão no site da 42sp: https://www.42sp.org.br

Releases

No releases published

Packages

No packages published