From d7dd6e8ba8d9eeb73ddfb070ac0097d7d1685f9e Mon Sep 17 00:00:00 2001 From: hugodu69 Date: Fri, 14 Feb 2020 12:02:46 +0100 Subject: [PATCH] itoa fonctionne pour les long et creation de utoa --- Makefile | 1 + libft.h | 1 + srcs/ft_utoa.c | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 65 insertions(+) create mode 100644 srcs/ft_utoa.c diff --git a/Makefile b/Makefile index 32934b3..079c626 100644 --- a/Makefile +++ b/Makefile @@ -43,6 +43,7 @@ SRCS = ft_memset.c \ ft_strtrim.c \ ft_split.c \ ft_itoa.c \ + ft_utoa.c \ ft_strmapi.c \ ft_putchar_fd.c \ ft_putstr_fd.c \ diff --git a/libft.h b/libft.h index e01ccd0..de5dcca 100644 --- a/libft.h +++ b/libft.h @@ -46,6 +46,7 @@ char *ft_strjoin(char const *s1, char const *s2); char *ft_strtrim(char const *s1, char const *set); char **ft_split(char const *s, char c); char *ft_itoa(long int n); +char *ft_utoa(unsigned long int n); char *ft_strmapi(char const *s, char (*f)(unsigned int, char)); void ft_putchar_fd(char c, int fd); void ft_putstr_fd(char *s, int fd); diff --git a/srcs/ft_utoa.c b/srcs/ft_utoa.c new file mode 100644 index 0000000..7fc52dd --- /dev/null +++ b/srcs/ft_utoa.c @@ -0,0 +1,63 @@ + +/* +** take an unsigned integer and give a string +*/ + +/* +** #include // for printf +** #include // for atoi +** +** char *ft_utoa(unsigned long int n); +** +** int main(int ac, char **av) +** { +** if (ac == 0) +** return (0); +** else if (ac == 2) +** printf("%s\n",ft_utoa(atoi(av[1]))); +** else +** { +** unsigned long int i; +** i = 0; +** printf(" %lu\n %s\n\n",i,ft_utoa(i)); +** i = 237683; +** printf(" %lu\n %s\n\n",i,ft_utoa(i)); +** i = 1234567; +** printf(" %lu\n %s\n\n",i,ft_utoa(i)); +** i = 12345678; +** printf(" %lu\n %s\n\n",i,ft_utoa(i)); +** i = 2147483646; +** printf(" %lu\n %s\n\n",i,ft_utoa(i)); +** i = 2147483647; +** printf(" %lu\n %s\n\n",i,ft_utoa(i)); +** i = 2147483648; +** printf(" %lu\n %s\n\n",i,ft_utoa(i)); +** i = 2147483649; +** printf(" %lu\n %s\n\n",i,ft_utoa(i)); +** i = 9223372036854775807; +** printf("| %lu\n| %s\n\n",i,ft_utoa(i)); +** } +** return 0; +** } +*/ + +#include "libft.h" + +char *ft_utoa(unsigned long int n) +{ + char *str; + int len; + unsigned long int cpy; + + cpy = n; + len = 1; + while (n /= 10) + len++; + if (!(str = (char *)malloc(sizeof(char) * (len + 1)))) + return (NULL); + str[len] = '\0'; + str[--len] = cpy % 10 + '0'; + while (cpy /= 10) + str[--len] = cpy % 10 + '0'; + return (str); +}