From 61b98869eb00bf406b4ab70f3284a0085bb385cb Mon Sep 17 00:00:00 2001 From: Lukas Jiriste Date: Wed, 6 Sep 2023 18:07:41 +0200 Subject: [PATCH] Made test rule in Makefile which diffs main using ft_printf and builtin printf. Made small patches in the .c files. --- Makefile | 25 ++++++++-- conversion.c | 5 +- formatting.c | 7 ++- ft_printf.c | 2 +- main.c | 127 +++++++++++++++++++++++++++++++++++++++++++++------ 5 files changed, 143 insertions(+), 23 deletions(-) diff --git a/Makefile b/Makefile index dcb449f..a1634f0 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -CC = cc +CC = cc -g CFLAGS = -Wall -Wextra -Werror AR = ar @@ -6,16 +6,17 @@ RM = rm -f INCLUDE = $(addprefix -I, . ./Libft) SRCDIR = . -# SOURCES = $(addprefix $(SRCDIR)/, ft_putchar.c ft_putstr.c ft_strcmp.c ft_strlen.c ft_swap.c) -SOURCES = $(shell find $(SRCDIR) -maxdepth 1 -name "*.c") +SOURCES = $(filter-out ./orig_main.c, $(shell find $(SRCDIR) -maxdepth 1 -name "*.c")) OBJECTS = $(SOURCES:.c=.o) libft.a +ORIGOBJ = $(filter-out ./main.o, $(OBJECTS)) ./orig_main.o -NAME = libftprintf.a +NAME = test.out +ORINAME = orig.out all : $(NAME) $(NAME) : $(OBJECTS) - $(AR) rcs $(NAME) $(OBJECTS) + $(CC) $(CFLAGS) -o $@ $(OBJECTS) $(INCLUDE) libft.a : $(MAKE) -C ./Libft @@ -34,3 +35,17 @@ fclean : clean re : fclean $(MAKE) all + +orig_main.o : orig_main.c + $(CC) -o $@ -c $< $(INCLUDE) + +orig_main.c : main.c + sed 's/ft_printf/printf/g' main.c > orig_main.c + +$(ORINAME) : $(ORIGOBJ) + $(CC) -o $@ $(ORIGOBJ) $(INCLUDE) + +test : $(NAME) $(ORINAME) + ./$(NAME) > ft_printf.txt + ./$(ORINAME) > printf.txt + diff -a ft_printf.txt printf.txt diff --git a/conversion.c b/conversion.c index c7f722a..8e77512 100644 --- a/conversion.c +++ b/conversion.c @@ -6,7 +6,7 @@ /* By: ljiriste +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/09/05 11:30:56 by ljiriste #+# #+# */ -/* Updated: 2023/09/05 12:10:06 by ljiriste ### ########.fr */ +/* Updated: 2023/09/06 16:54:57 by ljiriste ### ########.fr */ /* */ /* ************************************************************************** */ @@ -72,7 +72,8 @@ int handle_conversion(const char **format, va_list *args) if (!valid_toprint(to_print)) return (-1); ft_putstr_fd(to_print.left_pad, 1); - ft_putchar_fd(to_print.sign, 1); + if (to_print.sign != '\0') + ft_putchar_fd(to_print.sign, 1); ft_putstr_fd(to_print.zero_pad, 1); ft_putstr_fd(to_print.alt, 1); ft_putstr_fd(to_print.main_part, 1); diff --git a/formatting.c b/formatting.c index 089ea6f..68c67f9 100644 --- a/formatting.c +++ b/formatting.c @@ -6,7 +6,7 @@ /* By: ljiriste +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/09/05 11:28:21 by ljiriste #+# #+# */ -/* Updated: 2023/09/05 12:11:32 by ljiriste ### ########.fr */ +/* Updated: 2023/09/06 18:00:13 by ljiriste ### ########.fr */ /* */ /* ************************************************************************** */ @@ -32,7 +32,10 @@ static char *create_alt(t_conv conv) static void create_main(char *str, t_conv conv, t_to_print *tp) { - if (conv.type == 'd' || conv.type == 'i') + if (conv.type != 's' && conv.type != 'c' + && ft_strncmp(str, "0", 2) == 0 && conv.prec == 0) + tp->main_part = ft_strdup(""); + else if (conv.type == 'd' || conv.type == 'i') { if (*str == '-') { diff --git a/ft_printf.c b/ft_printf.c index db1fbce..8fdd78b 100644 --- a/ft_printf.c +++ b/ft_printf.c @@ -6,7 +6,7 @@ /* By: ljiriste +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/17 09:14:21 by ljiriste #+# #+# */ -/* Updated: 2023/09/05 12:10:57 by ljiriste ### ########.fr */ +/* Updated: 2023/09/06 18:01:29 by ljiriste ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/main.c b/main.c index 062b8e5..0eaee8b 100644 --- a/main.c +++ b/main.c @@ -1,32 +1,133 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* main.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ljiriste +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/09/06 17:26:17 by ljiriste #+# #+# */ +/* Updated: 2023/09/06 18:05:39 by ljiriste ### ########.fr */ +/* */ +/* ************************************************************************** */ + #include "ft_printf.h" int main(void) { - //ft_printf("Ahoj vole - %010.5s\n", "Ahoj vole"); - /* ft_printf("Trying format d/i:\n"); ft_printf("Without flags:\n"); - ft_printf("\t-1\t\t%d\n", -1); + + ft_printf("\n\t-1\t\t%d\n", -1); ft_printf("\t0\t\t%d\n", 0); ft_printf("\t1\t\t%d\n", 1); - ft_printf("\t32767\t\t%d\n", 32767); + + ft_printf("\n\t32767\t\t%d\n", 32767); ft_printf("\t32768\t\t%d\n", 32768); ft_printf("\t32769\t\t%d\n", 32769); - ft_printf("\t65535\t\t%d\n", 65535); + + ft_printf("\n\t65535\t\t%d\n", 65535); ft_printf("\t65536\t\t%d\n", 65536); ft_printf("\t65537\t\t%d\n", 65537); - ft_printf("\t2147483647\t%d\n", 2147483647); + + ft_printf("\n\t2147483647\t%d\n", 2147483647); ft_printf("\t2147483648\t%d\n", 2147483648); ft_printf("\t2147483649\t%d\n", 2147483649); - ft_printf("\t4294967295\t%d\n", 4294967295); + + ft_printf("\n\t4294967295\t%d\n", 4294967295); ft_printf("\t4294967296\t%d\n", 4294967296); ft_printf("\t4294967297\t%d\n", 4294967297); - */ - ft_printf("%010d\n", 1998); - ft_printf("%0+10d\n", 1998); - ft_printf("%+10d\n", 1998); - ft_printf("% 10d\n", 1998); - ft_printf("% 010d\n", 1998); + + + ft_printf("\nWith flags applicable to format d/i (+ -0):\n"); + + ft_printf("\n\t| 1998|\t|%10d|\n", 1998); + ft_printf("\t| 1998|\t|% 10d|\n", 1998); + ft_printf("\t| 1998|\t|% 10d|\n", 1998); + + ft_printf("\n\t| +1998|\t|%+10d|\n", 1998); + ft_printf("\t| +1998|\t|%+ 10d|\n", 1998); + ft_printf("\t| +1998|\t|% + + +++ 10d|\n", 1998); + ft_printf("\t| +1998|\t|% +10d|\n", 1998); + ft_printf("\t| +1998|\t|%+ + +++ ++ 10d|\n", 1998); + ft_printf("\t| +1998|\t|% + + + ++10d|\n", 1998); + ft_printf("\t| +1998|\t|%+ + + ++ + 10d|\n", 1998); + ft_printf("\t| +1998|\t|%+ + + ++ + +10d|\n", 1998); + + ft_printf("\n\t| 000001998|\t|% 010d|\n", 1998); + ft_printf("\t| 000001998|\t|%0 10d|\n", 1998); + ft_printf("\t| 000001998|\t|%0 000 0 0010d|\n", 1998); + ft_printf("\t| 000001998|\t|% 0 000 0 0010d|\n", 1998); + ft_printf("\t| 000001998|\t|%0 000 0 00 10d|\n", 1998); + ft_printf("\t| 000001998|\t|% 0 000 0 00 10d|\n", 1998); + + ft_printf("\n\t|+000001998|\t|%0+10d|\n", 1998); + ft_printf("\t|+000001998|\t|%+010d|\n", 1998); + ft_printf("\t|+000001998|\t|%0+ 10d|\n", 1998); + ft_printf("\t|+000001998|\t|%0 +10d|\n", 1998); + ft_printf("\t|+000001998|\t|% 0+10d|\n", 1998); + ft_printf("\t|+000001998|\t|% +010d|\n", 1998); + ft_printf("\t|+000001998|\t|%+0 10d|\n", 1998); + ft_printf("\t|+000001998|\t|%+ 010d|\n", 1998); + + ft_printf("\n\t|0000001998|\t|%010d|\n", 1998); + ft_printf("\t|0000001998|\t|%0000000000010d|\n", 1998); + + ft_printf("\n\t|1998 |\t|%-10d|\n", 1998); + ft_printf("\t|1998 |\t|%0-10d|\n", 1998); + ft_printf("\t|1998 |\t|%-010d|\n", 1998); + ft_printf("\t|1998 |\t|%-0000-----00-00-0-10d|\n", 1998); + ft_printf("\t|1998 |\t|%-0000---0-0-0--0-0-0010d|\n", 1998); + ft_printf("\t|1998 |\t|%0000---0-0-0--0-0-0-10d|\n", 1998); + ft_printf("\t|1998 |\t|%0000---0-0-0--0-0-0010d|\n", 1998); + + ft_printf("\n\t| 1998 |\t|%- 10d|\n", 1998); + ft_printf("\t| 1998 |\t|% -10d|\n", 1998); + ft_printf("\t| 1998 |\t|%0 -10d|\n", 1998); + ft_printf("\t| 1998 |\t|% 0-10d|\n", 1998); + ft_printf("\t| 1998 |\t|% -010d|\n", 1998); + ft_printf("\t| 1998 |\t|%0- 10d|\n", 1998); + ft_printf("\t| 1998 |\t|%-0 10d|\n", 1998); + ft_printf("\t| 1998 |\t|%- 010d|\n", 1998); + + ft_printf("\n\t|+1998 |\t|%-+10d|\n", 1998); + ft_printf("\t|+1998 |\t|%+-10d|\n", 1998); + ft_printf("\t|+1998 |\t|% +-10d|\n", 1998); + ft_printf("\t|+1998 |\t|%+ -10d|\n", 1998); + ft_printf("\t|+1998 |\t|%+- 10d|\n", 1998); + ft_printf("\t|+1998 |\t|% -+10d|\n", 1998); + ft_printf("\t|+1998 |\t|%- +10d|\n", 1998); + ft_printf("\t|+1998 |\t|%-+ 10d|\n", 1998); + + + ft_printf("\nMinimum width smaller than input:\n"); + + ft_printf("\n\t|2147483647|\n\t|%5d|\n", 2147483647); + ft_printf("\t|2147483647|\n\t|%05d|\n", 2147483647); + + ft_printf("\n\t| 2147483647|\n\t|% 5d|\n", 2147483647); + ft_printf("\t| 2147483647|\n\t|% 05d|\n", 2147483647); + ft_printf("\t|+2147483647|\n\t|%+05d|\n", 2147483647); + ft_printf("\t|+2147483647|\n\t|%+5d|\n", 2147483647); + + + ft_printf("\nPrecision:\n"); + + ft_printf("\n\t||\t|%.0d|\n\n", 0); + + ft_printf("\n\t| 1998|\t|%10.0d|\n", 1998); + ft_printf("\t| 1998|\t|%10.1d|\n", 1998); + ft_printf("\t| 1998|\t|%10.2d|\n", 1998); + ft_printf("\t| 1998|\t|%10.3d|\n", 1998); + ft_printf("\t| 1998|\t|%10.4d|\n", 1998); + ft_printf("\t| 01998|\t|%10.5d|\n", 1998); + ft_printf("\t| 001998|\t|%10.6d|\n", 1998); + ft_printf("\t| 0001998|\t|%10.7d|\n", 1998); + ft_printf("\t| 00001998|\t|%10.8d|\n", 1998); + ft_printf("\t| 000001998|\t|%10.9d|\n", 1998); + ft_printf("\t|0000001998|\t|%10.10d|\n", 1998); + + ft_printf("\n\t|00000001998|\t|%10.11d|\n", 1998); + return (0); } -- 2.30.2