/*
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;
}
To embed this project on your website, copy the following code and paste it into your website's HTML: