diff --git a/Makefile b/Makefile index e201ef7..60235b6 100644 --- a/Makefile +++ b/Makefile @@ -23,7 +23,7 @@ SRCS = ft_printf.c \ ODIR = ./builds OBJS = $(SRCS:%.c=$(ODIR)/%.o) -CFLAGS = -I$(IDIR) +CFLAGS = -I$(IDIR) -g LFLAGS = -L$(LDIR) -l$(LIBS) # - - - - - - - - - - - # diff --git a/ft_printf b/ft_printf new file mode 100755 index 0000000..9041bdc Binary files /dev/null and b/ft_printf differ diff --git a/ft_printf.c b/ft_printf.c index 1d76b80..22c03ee 100644 --- a/ft_printf.c +++ b/ft_printf.c @@ -30,19 +30,52 @@ ** char *ft_lpadd(int i, char *print, char c); */ +char *ft_precision(char *s, char *print) +{ char *test; + char *tmp; + int i; test = s; + + if ((tmp = ft_strchr(s, '.'))) + { ft_putstr("(");ft_putstr(s);ft_putstr(")"); + i = ft_atoi(tmp + 1); + while (*tmp) + *(tmp++) = '\0'; + while (ft_strchr("#- +'0", *(++s))) + if (*s == '0') + *s = '.'; +// tmp = s; +// while (ft_strchr("%#- +'0", *s)) +// { +// if (*s == '0') +// s++; +// *tmp = *s; +// tmp++; +// s++; +// } +// while (*s) +// { +// *tmp = *s; +// s++; +// tmp++; +// } +/* *tmp = '\0';*/ s = test;ft_putstr("[");ft_putnbr(i);ft_putstr("]");ft_putstr("(");ft_putstr(s);ft_putstr(")"); +// return (precision_trsf); + } + return (print); +} + char *ft_flag_transform(char *s, char *print) { - (void)s; - printf("|%i| - |%.0i| - |%.0i| - |%.i|\n",0,0,1,0); - printf("|%i| - |%i| - |%.4i| - |%.4i|\n",10,-10,10,-10); - printf("|%i| - |%05i| - |%05.4i| - |%.4i|\n",10,10,10,10); - printf("|%i| - |%-5i| - |%-5.4i| - |%-.4i|\n",10,10,10,10); - char * t = "trois"; - printf("|%s| - |%.0s| - |%.2s| - |%.10s|\n",t,t,t,t); - char y = 'y'; - printf("|%c| - |%.0c| - |%.2c| - |%.10c|\n",y,y,y,y); +// printf("|%i| - |%.0i| - |%.0i| - |%.i|\n",0,0,1,0); +// printf("|%i| - |%i| - |%.4i| - |%.4i|\n",10,-10,10,-10); +// printf("|%i| - |%05i| - |%05.4i| - |%.4i|\n",10,10,10,10); +// printf("|%i| - |%-5i| - |%-5.4i| - |%-.4i|\n",10,10,10,10); +// char * t = "trois"; +// printf("|%s| - |%.0s| - |%.2s| - |%.10s|\n",t,t,t,t); +// char y = 'y'; +// printf("|%c| - |%.0c| - |%.2c| - |%.10c|\n",y,y,y,y); -// print = ft_precision + print = ft_precision(s, print); // (print, s, type); // -regarde s'il y a un '.' suivit de // chiffres, donc une precision // -si oui transforme les chiffres en diff --git a/main.c b/main.c index 8baf767..5797780 100644 --- a/main.c +++ b/main.c @@ -109,6 +109,12 @@ int main(int ac, char **av) ft_printf("%lX\n\n", 9223372036854775807); printf("%p\n", "dfgdf"); ft_printf("%p\n\n", "dfgdf"); + ft_printf("%.i\n", 123); + ft_printf("%.2i\n", 123); + ft_printf("%.252653i\n", 123); + ft_printf("%0.6i\n", 123); + ft_printf("%- 032.6i\n", 123); + ft_printf("%0-0 32.6i\n", 123); } /* ////////////////////////////////////////////////////////////////// */