diff options
| author | Charles <sircharlesaze@gmail.com> | 2019-07-29 16:56:27 +0200 |
|---|---|---|
| committer | Charles <sircharlesaze@gmail.com> | 2019-07-29 16:56:27 +0200 |
| commit | 9a2b208985ac7d4644c718ada74770b98eeb4598 (patch) | |
| tree | f190f9dc0bc1228a28c5901842d2f30738a865f8 /ft_itoa.c | |
| parent | 009780065032aa23c6d72dd7ab02adb481a7c76d (diff) | |
| download | libft-9a2b208985ac7d4644c718ada74770b98eeb4598.tar.gz libft-9a2b208985ac7d4644c718ada74770b98eeb4598.tar.bz2 libft-9a2b208985ac7d4644c718ada74770b98eeb4598.zip | |
part 2 done (except putchar and putstr unicode)
Diffstat (limited to 'ft_itoa.c')
| -rw-r--r-- | ft_itoa.c | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/ft_itoa.c b/ft_itoa.c new file mode 100644 index 0000000..3dc4396 --- /dev/null +++ b/ft_itoa.c @@ -0,0 +1,53 @@ +#include <stdlib.h> + + +static int count_len(int nbr) +{ + int counter; + unsigned int u_nbr; + + if (nbr == 0) + return (1); + counter = 0; + u_nbr = nbr; + if (nbr < 0) + { + counter++; + u_nbr = -nbr; + } + while (u_nbr > 0) + { + u_nbr /= 10; + counter++; + } + return (counter); +} + +char *ft_itoa(int n) +{ + char *str; + int len; + int is_negative; + unsigned int u_nbr; + + len = count_len(n); + if ((str = (char*)malloc(sizeof(char) * (len + 1))) == NULL) + return (NULL); + str[len] = '\0'; + is_negative = 0; + u_nbr = n; + if (n < 0) + { + is_negative = 1; + str[0] = '-'; + u_nbr = -n; + } + len--; + while (len >= (is_negative ? 1 : 0)) + { + str[len] = u_nbr % 10 + '0'; + u_nbr /= 10; + len--; + } + return (str); +} |
