diff --git a/Makefile b/Makefile index 30b3a42..abe58d9 100644 --- a/Makefile +++ b/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:45 by gbaconni ### lausanne.ch # +# Updated: 2022/04/25 07:11:15 by gbaconni ### lausanne.ch # # # # **************************************************************************** # # @@ -89,6 +89,7 @@ fast: test: clean $(NAME) @$(PREFIX) ./$(NAME) "%c" C @$(PREFIX) ./$(NAME) "%s" "42 Lausanne" + @$(PREFIX) ./$(NAME) "%s" "" @$(PREFIX) ./$(NAME) "%d" 42 @$(PREFIX) ./$(NAME) "%i" 2147483647 @$(PREFIX) ./$(NAME) "%i" -2147483646 diff --git a/libftprintf/ft_vprintf_string.c b/libftprintf/ft_vprintf_string.c index cbe6406..9d8503f 100644 --- a/libftprintf/ft_vprintf_string.c +++ b/libftprintf/ft_vprintf_string.c @@ -6,7 +6,7 @@ /* By: gbaconni@student.42lausanne.ch +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/01/20 11:56:37 by gbaconni #+# #+# */ -/* Updated: 2022/04/24 00:59:10 by gbaconni ### lausanne.ch */ +/* Updated: 2022/04/25 07:12:44 by gbaconni ### lausanne.ch */ /* */ /* ************************************************************************** */ @@ -18,7 +18,13 @@ int ft_vprintf_string(const char *format, va_list ap) char *s; (void) format; + ret = 0; s = va_arg(ap, char *); + if (s == NULL) + { + ret = ft_puts("(null)"); + return (ret); + } ret = ft_puts(s); return (ret); } diff --git a/main.c b/main.c index e3d9067..e993f1e 100644 --- a/main.c +++ b/main.c @@ -6,7 +6,7 @@ /* By: gbaconni@student.42lausanne.ch +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/04/13 06:58:46 by gbaconni #+# #+# */ -/* Updated: 2022/04/24 11:14:40 by gbaconni ### lausanne.ch */ +/* Updated: 2022/04/25 07:08:49 by gbaconni ### lausanne.ch */ /* */ /* ************************************************************************** */ @@ -59,7 +59,7 @@ int _printf(int (*f)(const char *restrict, ...), \ else if (c == 's') ret = (*f)(format, arg); else if (c == 'p') - ret = (*f)(format, &arg); + ret = (*f)(format, (arg)? &arg: NULL); else if (c == 'x' || c == 'X') ret = (*f)(format, atol(arg)); else if (c == 'd' || c == 'i' || c == 'u') @@ -99,6 +99,8 @@ int assert_printf(char *format, char *arg) char out[256]; char ft_out[256]; + if (arg == NULL || strcmp(arg, "") == 0) + arg = NULL; ret = _sprintf(printf, out, format, arg); printf("%d = printf(\"%s\", '%s')\n%s\n", ret, format, arg, out); ft_ret = _sprintf(ft_printf, ft_out, format, arg);