/*Fichiers à Rendre: ft_putnbr.c
Autorisé: write
• Écrivez une fonction qui affiche le nombre passé en paramètre. La fonction doit pouvoir
afficher toutes les valeurs possibles d’une variable de type int.
Prototype :
void ft_putnbr(int nb);
• Par exemple :
ft_putnbr(42) affiche :
?> ./a.out
42*/

#include <unistd.h>

void ft_putchar(char c)
{
    write(1, &c, 1);
}

void	ft_putnbr(int nb)
{
	//char premier;
    //char second;
    
    //premier = (nb / 10) + '0';
    //second = (nb % 10) + '0';

    // traite le pire des cas
    if (nb == -2147483648)
    {
        write(1, "-2147483648", 11);
        return ;
    }


    // gerer les cas de nbr negatif
    if(nb < 0)
    {
        ft_putchar('-');
        nb = nb * -1;
    }

    /*if(nb >= 0 && nb < 10)
    {
        ft_putchar(nb + '0');
    }
    else
    {
        ft_putnbr(nb / 10);
        ft_putnbr(nb % 10);
    }*/

    if (nb >= 10)
    {
        ft_putnbr(nb / 10);
    }
    ft_putchar(nb % 10 + '0');


    /*if(nb / 10 >= 10)
    {
        // on traite les nombres au dessus de 10
        // en les renvoyant dans la fonction ft_putnbr
        // tant qu'il seront > 10 ca permet de traiter
        // tous les nombres positifs
        ft_putnbr(nb / 10); // donne 42
        ft_putnbr(nb % 10 * 1); // donne 05 au lieu de 5 meme * 1 ne fonctionne pas
        // comment enlever le 0 ?
    } 
    else if(nb / 10 == 0) 
    {
        // la si je divise 5 / 10 = 0 donc c pour ca que j avais un 0
        // car 0 + '0' = 48  soit 0 du tab ASCII
        // 425 me donnait 4205
        ft_putchar(nb + '0');
    }
    else 
    {
        ft_putchar(nb / 10 + '0');
        ft_putchar(nb % 10 + '0');
    }*/
    
}

int	main(void)
{
	ft_putnbr(-2147483648);
    ft_putchar('\n');
    ft_putnbr(-2147);
    ft_putchar('\n');
	ft_putnbr(42);
	ft_putchar('\n');
	ft_putnbr(425);
	ft_putchar('\n');
	ft_putnbr(4250);
    ft_putchar('\n');
	return (0);
}

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: