diff --git a/ft_printf.c b/ft_printf.c index 1a3eacd..411c456 100644 --- a/ft_printf.c +++ b/ft_printf.c @@ -6,7 +6,7 @@ /* By: adjoly +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/11/17 16:48:37 by adjoly #+# #+# */ -/* Updated: 2023/11/18 10:50:53 by adjoly ### ########.fr */ +/* Updated: 2023/11/18 20:56:29 by adjoly ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,9 +14,44 @@ #include "libftprintf.h" #include +void ft_putaddr(void *ptr) +{ + +} + +void ft_putnbrulong(int n) +{ + if (n < 10) + write(1, &(char){n + '0'}, 1); + else + { + ft_putnbr_fd(n / 10, 1); + write(1, &(char){n % 10 + '0'}, 1); + } +} + +int ft_printconversion(char conversion, va_list args) +{ + if (conversion == '%') + ft_putchar('%'); + else if (conversion == 's') + ft_putstr(va_arg(args, char *)); + else if (conversion == 'c') + ft_putchar(va_arg(args, char *)[0]); + else if (conversion == 'i' || conversion == 'd') + ft_putnbr(va_arg(args, int)); + else if (conversion == 'u') + ft_putnbrulong(va_arg(args, unsigned long)); + else if (conversion == 'p') + ft_putstr((char *)va_arg(args, void *)); + else if (conversion == 'x') + ft_putnbrbase(va_arg(args, int), "0123456789abcdef"); + else if (conversion == 'X') + ft_putnbrbase(va_arg(args, int), "0123456789ABCDEF"); +} + int ft_printf(const char *format, ...) { - char *result; int i; int j; va_list args; @@ -27,18 +62,12 @@ int ft_printf(const char *format, ...) if (format[i] == '%') { i++; - if (format[i] == '%') - ft_putchar('%'); - else if (format[i] == 's') - ft_putstr_fd(va_arg(args, char *), 1); - else if (format[i] == 'c') - ft_putchar_fd(va_arg(args, char *)[0], 1); - else if (format[i] == 'i' || format[i] == 'd') - ft_putnbr_fd(va_arg(args, int), 1); + ft_printconversion(format[i], args); } else ft_putchar_fd(format[i], i); i++; } + va_end(args); return (ft_strlen(result)); } diff --git a/libft b/libft index e391b9b..ff1b33e 160000 --- a/libft +++ b/libft @@ -1 +1 @@ -Subproject commit e391b9b0f745d775ca6cc48de602e1aab1f2866c +Subproject commit ff1b33e04319629324ff506eacef961f18df5dd7 diff --git a/libftprintf.h b/libftprintf.h index 1302174..6b7c519 100644 --- a/libftprintf.h +++ b/libftprintf.h @@ -6,7 +6,7 @@ /* By: adjoly +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/11/17 16:50:36 by adjoly #+# #+# */ -/* Updated: 2023/11/17 19:48:34 by adjoly ### ########.fr */ +/* Updated: 2023/11/18 18:51:53 by adjoly ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,6 +17,9 @@ # include # include "libft/libft.h" -int ft_printf(const char *format, ...); +int ft_printf(const char *format, ...); +int ft_printconversion(char conversion, va_list args); +void ft_putnbrulong(int n); +void ft_putaddr(void *ptr); #endif \ No newline at end of file