/*
    but: transformer un nbr int en une chaine de caractère
    il faut gérer:
    - calculer la longueur (nbr de caractère du int avec y inclure le signe -)
    - malloc une chaine avec len + 1
    - ensuite on va écrire depuis derrère car utilise % enleve le bout
    - mettre le \0 en postion len
    - gérer le signe: si nég transformer en postif et écrie - en postion 0
    - si 0 alors écrire le 0 en postion 0 et return car fini
    - pour les autre nombre: --len (pour sauter écrire le premier caractere derrire, avec modulo sortir depuis l arrière, cater avec + '0', ajouter en postion len--, /10 le nbre
    - a la fin retourner le str
*/

#include <stdio.h>
#include <stdlib.h>

int cal_len(int nbr)
{
    int i = 0;
    long n;
    n = nbr;

    if (n <= 0)
    {
        n = -n;
        i++;
    }

    while (n > 0)
        {
            n /= 10;
            i++;
        }
    printf("Dans cal_len: len est de %d \n", i);
    return i;    
}

char	*ft_itoa(int nbr)
{
    int len;
    int i;
    int sign = 1;
    char *str;
    

    len = cal_len(nbr);
    str = malloc(sizeof(char) * (len + 1));
    if (!str)
    {
        return (NULL);
    }
    str[len] = '\0';
    printf("Dans itoa: str[len] est %c avec valeur de len de: %d \n", str[len], len);
    if (nbr < 0)
    {
        sign = -sign;
        nbr = -nbr;
        str[0] = '-';
    }
    if (nbr == 0)
    {
        str[0] = '0';
        return (str);
    }
    --len;
    printf("Dans itoa: str[len] est %c avec valeur de len de: %d \n", str[len], len);
    while (nbr > 0)
        {
            str[len] = nbr % 10 + '0';
            nbr /= 10;
            printf("Dans itoa: str[len] est %c avec valeur de len de: %d \n", str[len], len);
            printf("Dans itoa: nbr est: %d \n", nbr);
            len--;
        }
    return (str);
}

int main(void)
{
    int nbr = -123456;
    char *result;

    result = ft_itoa(nbr);
    printf("Dans Main: Resultat est: %s \n", result);
    return 0;
}

Embed on website

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