diff --git a/libftprintf/Makefile b/libftprintf/Makefile index fe7916d..b1b32e9 100644 --- a/libftprintf/Makefile +++ b/libftprintf/Makefile @@ -6,7 +6,7 @@ # By: gbaconni@student.42lausanne.ch +#+ +:+ +#+ # # +#+#+#+#+#+ +#+ # # Created: 2022/01/18 15:11:16 by gbaconni #+# #+# # -# Updated: 2022/04/24 11:41:33 by gbaconni ### lausanne.ch # +# Updated: 2022/04/25 13:17:14 by gbaconni ### lausanne.ch # # # # **************************************************************************** # # @@ -46,7 +46,8 @@ SRC = \ ft_vprintf.c \ ft_printf.c -SRC_BONUS = +SRC_BONUS = \ + ft_vprintf_flags_bonus.c OBJ = ${SRC:.c=.o} OBJ_BONUS = ${SRC_BONUS:.c=.o} diff --git a/libftprintf/ft_vprintf.c b/libftprintf/ft_vprintf.c index bd8da1e..7824431 100644 --- a/libftprintf/ft_vprintf.c +++ b/libftprintf/ft_vprintf.c @@ -6,7 +6,7 @@ /* By: gbaconni@student.42lausanne.ch +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/01/20 11:43:52 by gbaconni #+# #+# */ -/* Updated: 2022/04/24 01:04:26 by gbaconni ### lausanne.ch */ +/* Updated: 2022/04/25 12:48:04 by gbaconni ### lausanne.ch */ /* */ /* ************************************************************************** */ @@ -24,7 +24,7 @@ int ft_vprintf(char const *format, va_list ap) if (*fmt == '%') { fmt++; - fmt += ft_skipchars(fmt, "0123456789# +"); + fmt += ft_skipchars(fmt, "0123456789+-.# +"); ret += ft_vprintf_percent(fmt, ap); } else diff --git a/libftprintf/ft_vprintf_flags_bonus.c b/libftprintf/ft_vprintf_flags_bonus.c new file mode 100644 index 0000000..97feca3 --- /dev/null +++ b/libftprintf/ft_vprintf_flags_bonus.c @@ -0,0 +1,36 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_vprintf_flags_bonus.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gbaconni@student.42lausanne.ch +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/04/25 13:15:32 by gbaconni #+# #+# */ +/* Updated: 2022/04/25 13:17:47 by gbaconni ### lausanne.ch */ +/* */ +/* ************************************************************************** */ + +#include "libftprintf.h" + +int ft_vprintf_flags_bonus(const char *format, va_list ap) +{ + int ret; + + ret = 0; + (void) ap; + while (*format != '\0') + { + if (*format == '#') + ret |= F_HASH; + else if (*format == '0') + ret |= F_ZERO; + else if (*format == '-') + ret |= F_MINUS; + else if (*format == ' ') + ret |= F_SPACE; + else if (*format == '+') + ret |= F_PLUS; + format++; + } + return (ret); +} diff --git a/libftprintf/libftprintf.h b/libftprintf/libftprintf.h index 29e2d3d..d4632bb 100644 --- a/libftprintf/libftprintf.h +++ b/libftprintf/libftprintf.h @@ -6,7 +6,7 @@ /* By: gbaconni@student.42lausanne.ch +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/01/18 15:26:06 by gbaconni #+# #+# */ -/* Updated: 2022/04/24 00:00:59 by gbaconni ### lausanne.ch */ +/* Updated: 2022/04/25 13:18:21 by gbaconni ### lausanne.ch */ /* */ /* ************************************************************************** */ @@ -46,4 +46,15 @@ int ft_vprintf_escape(const char *format, va_list ap); int ft_vprintf_other(const char *format, va_list ap); /* Bonus */ + +enum { + F_HASH = 1 << 0, + F_ZERO = 1 << 1, + F_MINUS = 1 << 2, + F_SPACE = 1 << 3, + F_PLUS = 1 << 4 +}; + +int ft_vprintf_flags_bonus(const char *format, va_list ap); + #endif