From ccbffa5a2163ee448a6269f53430c6a5316afe35 Mon Sep 17 00:00:00 2001 From: = <=> Date: Thu, 30 Oct 2025 17:44:02 +0100 Subject: [PATCH] Partial ptr and full str impl --- a.out | Bin 21480 -> 21648 bytes ft_printf.c | 34 ++++++++++++++++++++++++++-------- 2 files changed, 26 insertions(+), 8 deletions(-) diff --git a/a.out b/a.out index 5fa0ae84acb03c21d3f734698e4e1effaa4f014d..ca9f290f50836fbcd34869914a75dfde390904ea 100755 GIT binary patch delta 3874 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 b3^wO +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/10/29 14:24:47 by agilliar #+# #+# */ -/* Updated: 2025/10/30 17:33:02 by agilliar ### ########.fr */ +/* Updated: 2025/10/30 17:42:47 by agilliar ### ########.fr */ /* */ /* ************************************************************************** */ @@ -59,8 +59,8 @@ typedef enum e_specifier { SPECIFIER_NONE, SPECIFIER_CHAR, - SPECIFIER_STRING, - SPECIFIER_VOID_PTR, + SPECIFIER_STR, + SPECIFIER_PTR, SPECIFIER_INT, SPECIFIER_UINT, SPECIFIER_UINT_HEX_LOWER, @@ -125,6 +125,19 @@ int ft_putformat_str(const t_format *format, t_step_arg arg, bool simulated) return (i); } +int ft_putformat_ptr(const t_format *format, t_step_arg arg, bool simulated) +{ + t_format format2; + + if (!arg.v_ptr) + { + format2 = *format; + format2.specifier = SPECIFIER_STR; + arg.v_ptr = "(nil)"; + return (ft_putformat_str(&format2, arg, simulated)); + } +} + int ft_putformat(const t_format *format, t_step_arg arg) { int (*f)(const t_format *, t_step_arg, bool); @@ -132,8 +145,10 @@ int ft_putformat(const t_format *format, t_step_arg arg) if (format->specifier == SPECIFIER_CHAR) f = ft_putformat_char; - else if (format->specifier == SPECIFIER_STRING) + else if (format->specifier == SPECIFIER_STR) f = ft_putformat_str; + else if (format->specifier == SPECIFIER_PTR) + f = ft_putformat_ptr; else return (-1); len = f(format, arg, true); @@ -215,9 +230,9 @@ t_specifier ft_parse_specifier(char c) if (c == 'c') return (SPECIFIER_CHAR); if (c == 's') - return (SPECIFIER_STRING); + return (SPECIFIER_STR); if (c == 'p') - return (SPECIFIER_VOID_PTR); + return (SPECIFIER_PTR); if (c == 'd' || c == 'i') return (SPECIFIER_INT); if (c == 'u') @@ -266,7 +281,7 @@ t_step specifier_to_step(t_specifier spec) { if (spec == SPECIFIER_NONE || spec == SPECIFIER_PERCENT) return (STEP_NONE); - if (spec == SPECIFIER_STRING || spec == SPECIFIER_VOID_PTR) + if (spec == SPECIFIER_STR || spec == SPECIFIER_PTR) return (STEP_PTR); if (spec == SPECIFIER_UINT) return (STEP_UINT); @@ -301,7 +316,10 @@ int ft_printf(const char *s, ...) return (count); } +#include int main(void) { - ft_printf("c%-10s", NULL); + const char *s = "hai"; + ft_printf("c%-10.2s", s); + printf("c%-10.2s", s); } -- 2.51.0