Giter VIP home page Giter VIP logo

ft_printf's Introduction

42 Cursus - ft_printf

completion-with-bonus-badge

Neste projeto é recriada parte da famosa função printf da biblioteca stdio.h. A ft_printf deve ser capaz de formatar e imprimir na tela diferentes tipos de dados como strings, caracteres, inteiros, hexadecimais e ponteiros. Aqui a lição é sobre variadic arguments, que nos permite variar a quantidade de parâmetros que podem ser passadas para uma função. O bônus aborda as flags que podemos utilizar para formatar as saídas do printf. Assim como os dois projetos anteriores, a ft_prinft poderá ser utilizada em projetos futuros.

Especificadores e Flag implementadas

Format Specifiers

Specifiers Descrição
—————— ——————————————————————————————————————————
%% Imprime '%' na tela.
%c Imprime um caractere.
%s Imprime uma string.
%p Imprime um endereço de ponteiro.
%i Imprime um inteiro (positivo ou negativo).
%d Imprime um decimal (idêntico a %i).
%u Imprime um inteiro (somente positivo).
%x Imprime um hexadecimal (minúsculo).
%X Imprime um hexadecimal (maiúsculo).

Bonus Flags

Flag Descrição
—————— ——————————————————————————————————————————
# [Bônus]: Imprime '0x' ou '0X' na frente do hexadecimal quando usado com %x ou %X, respectivamente.

Compilação e Execução

No terminal, digite:

make

Caso queira executar a versão com bônus, digite:

make bonus

Será necessário criar uma main.c com o cabeçalho #include "ft_printf.h" e depois compilar com a libftprintf.a:

cc -Wall -Wextra -Werror main.c libftprintf.a && ./a.out

Bônus (não implementado): Format Specifiers

O bônus da ft_printf contempla a implementação de vários especificadores de formato, descritos abaixo.

Estes são opcionais, por isso não foram implementados, mas segue uma explicação breve sobre suas combinações e implementações:

  • Formatação:

     %[flags][width][.precision]specifier
    

Flags

Flag Descrição
—————— ——————————————————————————————————————————
- Justifica o resultado à esquerda dentro do campo (é justificado à direita por padrão).
+ Força a preceder o resultado com um sinal de mais ou menos (+ ou -), mesmo para números positivos (normalmente apenas números negativos são precedidos por um sinal).
Se não houver sinal, um espaço é anexado ao início do resultado.
# Usado com especificadores x ou X, o valor é precedido por 0x ou 0X, respectivamente, para valores diferentes de zero.
0 Preenche com zeros à esquerda de números ao invés de espaços.

Width

Width Descrição
—————— ——————————————————————————————————————————
<number> Número mínimo de caracteres a serem impressos. Se o valor a ser impresso for menor que esse número, o resultado será preenchido com espaços em branco. O valor não é truncado mesmo se o resultado for maior.
* A largura não é especificada como formato na string, mas como um argumento de valor inteiro adicional precedendo o argumento que deve ser formatado.

Precision

Precision Descrição
—————— ——————————————————————————————————————————
.<number> Para especificadores inteiros (d, i, u, x, X), a precisão especifica o número mínimo de dígitos a serem escritos. Se o valor a ser escrito for menor que esse número, o resultado será preenchido com zeros à esquerda. O valor não é truncado, mesmo que o resultado seja mais longo. Uma precisão de 0 significa que nenhum caractere é escrito para o valor 0. Para s, este é o número máximo de caracteres a serem impressos (por padrão, todos os caracteres são impressos até que o caractere nulo final seja encontrado). Para o tipo c, não tem efeito. Quando nenhuma precisão é especificada, o padrão é 1. Se o período for especificado sem um valor explícito para precisão, 0 será assumido.
.(*) A precisão não é especificada como formato na string, mas como um argumento de valor inteiro adicional precedendo o argumento que deve ser formatado.

Testers Utilizados

ft_printf's People

Contributors

iw90 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.