Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/adaog0n/42-ft_printf

Developed as part of the 42 school curriculum, this project demonstrates skills in string manipulation, type conversion, and low-level C programming.
https://github.com/adaog0n/42-ft_printf

Last synced: about 2 months ago
JSON representation

Developed as part of the 42 school curriculum, this project demonstrates skills in string manipulation, type conversion, and low-level C programming.

Awesome Lists containing this project

README

        

#

![](https://github.com/AdaoG0n/AdaoG0n/blob/main/assests/animated%20gifs/ft_printf.gif)

Para completar o projeto de recodificação da função `printf()` em `C`, siga os passos abaixo:
![Typing SVG](https://readme-typing-svg.demolab.com?font=Fira+Code&weight=100&size=40&letterSpacing=0px&duration=1000&pause=4000&center=true&vCenter=true&width=1900&lines=___________________________________________________________________________________________________)

### 1. Estrutura do Projeto

Crie a Estrutura de Diretórios:
Um diretório para os arquivos de código (src/).
Um diretório para os cabeçalhos (include/).

>[!Note]
> Eu decidi deixar tudo no mesmo diretório, mas é boa prática dividir os arquivos nos diretórios correspondentes.

![](https://github.com/AdaoG0n/AdaoG0n/blob/main/assests/bar.png)

### 2. Implementação da Função ft_printf

Prototype: Defina o protótipo da função:
```sh
int ft_printf(const char *format, ...);
```

Conversões Necessárias:


Implemente as seguintes conversões:
`%c:` caractere
`%s:` string
`%p:` ponteiro em formato hexadecimal
`%d:` número decimal
`%i:` inteiro
`%u:` número decimal sem sinal
`%x:` número em hexadecimal (minúsculo)
`%X:` número em hexadecimal (maiúsculo)
`%%:` símbolo de porcentagem

![](https://github.com/AdaoG0n/AdaoG0n/blob/main/assests/bar.png)

### 3. Gerenciamento de Argumentos Variáveis

Utilize as funções `va_start`, `va_arg`, e `va_end` para lidar com um número variável de argumentos.

![](https://github.com/AdaoG0n/AdaoG0n/blob/main/assests/bar.png)

### 4. Criação do Makefile

Crie um Makefile com as seguintes regras:
`NAME:` nome do arquivo executável.
`all:` compila todos os arquivos.
`clean:` remove arquivos temporários.
`fclean:` remove todos os arquivos gerados.
`re:` recompila tudo.

Exemplo básico de Makefile:

```bash
makefile
NAME = libftprintf.a

SRC = src/ft_printf.c src/utils.c
OBJ = $(SRC:.c=.o)

all: $(NAME)

$(NAME): $(OBJ)
ar rcs $@ $^

clean:
rm -f $(OBJ)

fclean: clean
rm -f $(NAME)

re: fclean all
```

![](https://github.com/AdaoG0n/AdaoG0n/blob/main/assests/bar.png)

### 5. Testes

Crie programas de teste para verificar a funcionalidade da sua implementação.
Teste todos os casos de uso, incluindo os casos limites.

![](https://github.com/AdaoG0n/AdaoG0n/blob/main/assests/bar.png)

### 6. Submissão

Faça commit do seu código no repositório Git.
Verifique se todos os arquivos estão nomeados corretamente e se não há erros de norma.

![](https://github.com/AdaoG0n/AdaoG0n/blob/main/assests/bar.png)

>[!Tip]
>Mantenha seu código bem estruturado e documentado.

>Revise a documentação sobre funções variádicas em C para melhor compreensão.

![](https://github.com/AdaoG0n/AdaoG0n/blob/main/assests/bar.png)

### Earned skills





![](https://github.com/AdaoG0n/AdaoG0n/blob/main/assests/bar.png)

### Links úteis

- [ ] [francinette](https://github.com/xicodomingues/francinette)
- [ ] [printf_tester](https://github.com/Tripouille/printfTester)

![](https://github.com/AdaoG0n/AdaoG0n/blob/main/assests/animated%20gifs/madeby.gif)
###### Projeto desenvolvido por: [Adão Gonçalves](https://github.com/AdaoG0n)

![Endpoint Badge](https://img.shields.io/endpoint?url=https%3A%2F%2Fhits.dwyl.com%2FAdaoG0n%2F42-FT_printf.json&style=flat-square&labelColor=black&color=blue)