From d81193d6981dd717dd1eb0fd3d0b9e8234e4bd08 Mon Sep 17 00:00:00 2001 From: Raphael Date: Fri, 19 Sep 2025 16:11:38 +0200 Subject: [PATCH] feat: adding functions around printf adding printf / dprint / vdprintf function --- sources/ft_printf.c | 72 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 sources/ft_printf.c diff --git a/sources/ft_printf.c b/sources/ft_printf.c new file mode 100644 index 0000000..172e133 --- /dev/null +++ b/sources/ft_printf.c @@ -0,0 +1,72 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_printf.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: rparodi +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2025/09/17 17:44:34 by rparodi #+# #+# */ +/* Updated: 2025/09/19 15:35:38 by rparodi ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "ft_printf.h" +#include +#include +#include +#include + +static int print_buff(int fd, const char *s, size_t start, size_t end) +{ + return (write(fd, s + start, (end - start))); +} + +int ft_vdprintf(int fd, const char *s, va_list args) +{ + size_t i; + size_t temp; + int to_ret; + + if (!s) + return (-1); + i = 0; + to_ret = 0; + temp = 0; + while (s[i]) + { + if (s[i] == '%') + { + to_ret += print_buff(fd, s, temp, i); + if (s[++i]) + to_ret += flag_managenent(fd, s[i], args); + else + return (write(1, &s[i - 1], 1) + to_ret); + temp = i + 1; + } + i++; + } + to_ret += print_buff(fd, s, temp, i); + return (to_ret); +} + +int ft_dprintf(int fd, const char *s, ...) +{ + int to_ret; + va_list args; + + va_start(args, s); + to_ret = ft_vdprintf(fd, s, args); + va_end(args); + return (to_ret); +} + +int ft_printf(const char *s, ...) +{ + int to_ret; + va_list args; + + va_start(args, s); + to_ret = ft_vdprintf(1, s, args); + va_end(args); + return (to_ret); +}