diff options
| author | Charles <sircharlesaze@gmail.com> | 2020-01-15 10:04:09 +0100 |
|---|---|---|
| committer | Charles <sircharlesaze@gmail.com> | 2020-01-15 10:04:09 +0100 |
| commit | 1e9b077e0d9f3c50d7d518bf6ea7f08e7f5ec590 (patch) | |
| tree | 21d906cd9f96c58af572ce3bb6784d1d8fca18d2 /src/io/ft_printf/convert_int.c | |
| parent | 49ad59b0e773e92e93fb69ede889c781ca53e680 (diff) | |
| download | libft-1e9b077e0d9f3c50d7d518bf6ea7f08e7f5ec590.tar.gz libft-1e9b077e0d9f3c50d7d518bf6ea7f08e7f5ec590.tar.bz2 libft-1e9b077e0d9f3c50d7d518bf6ea7f08e7f5ec590.zip | |
splited src in category, more generic makefile
Diffstat (limited to 'src/io/ft_printf/convert_int.c')
| -rw-r--r-- | src/io/ft_printf/convert_int.c | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/io/ft_printf/convert_int.c b/src/io/ft_printf/convert_int.c new file mode 100644 index 0000000..2345f76 --- /dev/null +++ b/src/io/ft_printf/convert_int.c @@ -0,0 +1,40 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* convert_int.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2019/10/30 23:29:53 by cacharle #+# #+# */ +/* Updated: 2019/11/06 00:00:09 by cacharle ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "ft_vasprintf.h" + +char *convert_int(va_list ap, t_pformat *pformat) +{ + int is_neg; + long long int n; + char *str; + + n = length_modifier_int(ap, pformat); + is_neg = n < 0; + str = ITOA_DEC(n); + if (is_neg) + ft_strcpy(str, str + 1); + str = handle_precision(pformat, str); + if (pformat->flags & FLAG_ZERO) + { + if (is_neg || pformat->flags & (FLAG_SIGNED | FLAG_SPACE)) + pformat->width--; + str = handle_width(pformat, str); + } + if (is_neg) + str = ft_strjoin_free_snd("-", str); + else if (pformat->flags & (FLAG_SIGNED | FLAG_SPACE)) + str = ft_strjoin_free_snd(pformat->flags & FLAG_SPACE ? " " : "+", str); + if (!(pformat->flags & FLAG_ZERO)) + str = handle_width(pformat, str); + return (str); +} |
