From 40a409963dceef61d21ebcb7828d76c82ffd56fd Mon Sep 17 00:00:00 2001 From: Hugo LAMY Date: Sun, 5 Jan 2020 20:15:29 +0100 Subject: [PATCH] debut ecriture process et ecriture erreurs --- ft_printf.c | 7 +++++-- main.c | 52 ++++++++++++++++++++++++++++++++-------------------- 2 files changed, 37 insertions(+), 22 deletions(-) diff --git a/ft_printf.c b/ft_printf.c index aa6e79e..8a24d84 100644 --- a/ft_printf.c +++ b/ft_printf.c @@ -54,7 +54,7 @@ conversions : cspdiuxX% conversions : nfge flags : l,ll,h,hh,#,', ,+ -%[arg_nbr$][flags #,0,-, ,+,'][width *][.precision *][length hh,h,ll,l,L,j,t,z][specifier d,i,u,x,X,c,s,p,%,e,f,g,n,E,F,G,a,A,C,S,o] +%[arg_nbr$][flags 0,-,#,', ,+][width *][.precision *][length hh,h,ll,l,L,j,t,z][specifier d,i,u,x,X,c,s,p,%,e,f,g,n,E,F,G,a,A,C,S,o] % [flags 0,- ][width *][.precision *] [specifier d,i,u,x,X,c,s,p,% ] % [flags #,', ,+] [length hh,h,ll,l ][specifier e,f,g,n ] @@ -63,7 +63,7 @@ typedef struct s_prist int print_nbr; int arg_nbr; char specifier; - char *flag; + int flag; //['0','-','#',''',' ','+','*'] binary int width; int precision; char *arg; @@ -79,6 +79,8 @@ store {printf_nbr 4; arg_nbr 4; specifier; flag; width; precision}, {printf_nbr 5; arg_nbr 3; specifier; flag; width; precision}} +check_more_error + sort_by_arg {{printf_nbr 2; arg_nbr 1; specifier; flag; width; precision}, {printf_nbr 1; arg_nbr 2; specifier; flag; width; precision}, @@ -87,6 +89,7 @@ sort_by_arg {printf_nbr 4; arg_nbr 4; specifier; flag; width; precision}} add_str_to_print +if flag == * >> rerun for next argument but same list element {{printf_nbr 2; arg_nbr 1; specifier; flag; width; precision; arg}, {printf_nbr 1; arg_nbr 2; specifier; flag; width; precision; arg}, {printf_nbr 3; arg_nbr 3; specifier; flag; width; precision; arg}, diff --git a/main.c b/main.c index e29ba6a..246e2d8 100644 --- a/main.c +++ b/main.c @@ -36,6 +36,21 @@ int main(void) // printf("(\"%%%%\") ft : "); ft_printf("%%\n"); printf("(\"%%%%\") : "); printf("%%\n"); printf("\n"); + // printf("(\"%%.10%%\") ft : "); ft_printf("'%.10%'\n"); + printf("(\"%%.10%%\") : "); printf("'%.10%'\n"); printf("\n"); + + // printf("(\"%%10%%\") ft : "); ft_printf("'%10%'\n"); + printf("(\"%%10%%\") : "); printf("'%10%'\n"); printf("\n"); + + // printf("(\"%%-10%%\") ft : "); ft_printf("'%-10%'\n"); + printf("(\"%%-10%%\") : "); printf("'%-10%'\n"); printf("\n"); + + // printf("(\"%%010%%\") ft : "); ft_printf("'%010%'\n"); + printf("(\"%%010%%\") : "); printf("'%010%'\n"); printf("\n"); + + // printf("(\"%%-010%%\") ft : "); ft_printf("'%-010%'\n"); + printf("(\"%%-010%%\") : "); printf("'%-010%'\n"); printf("\n"); + // printf("(\"\\\"\") ft : "); ft_printf("\"\n"); printf("(\"\\\"\") : "); printf("\"\n"); printf("\n"); @@ -163,6 +178,9 @@ int main(void) // printf("(\"%%.i\",0) ft : "); ft_printf("'%.i'\n", 0); printf("(\"%%.i\",0) : "); printf("'%.i'\n", 0); printf("\n"); + // printf("(\"%%010.7X\",8645) ft : "); ft_printf("'%010.7X'\n", 8645); + printf("(\"%%010.7X\",8645) : "); printf("'%010.7X'\n", 8645); printf("\n"); + printf("- flag * --------------------------------------\n\n"); // printf("(\"%%*i\",3,1) ft : "); ft_printf("'%*i'\n", 3, 1); @@ -222,33 +240,27 @@ int main(void) // printf("(\"%%2$*1$i\",3,2) ft : "); ft_printf("'%2$*1$i'\n", 3, 2); // printf("(\"%%2$*1$i\",3,2) : "); printf("'%2$*1$i'\n", 3, 2); printf("\n"); - // printf("-----------------------------------------------\n"); - // printf("- errors -\n"); - // printf("-----------------------------------------------\n\n"); + printf("-----------------------------------------------\n"); + printf("- errors -\n"); + printf("-----------------------------------------------\n\n"); // printf("(\"%%i\",3,2) ft : "); ft_printf("'%i'", 3, 2); - // printf("(\"%%i\",3,2) : "); printf("'%i'", 3, 2); printf(" [ERROR]\n\n"); + printf("(\"%%i\",3,2) : ");/* printf("'%i'", 3, 2);*/ printf(" too much argments\n\n"); - // printf("(\"%%i-%%i\",3) ft : "); ft_printf("'%i-%i'", 3); - // printf("(\"%%i-%%i\",3) : "); printf("'%i-%i'", 3); printf(" [ERROR]\n\n"); + // printf("(\"%%i-%%i\",3) ft : "); ft_printf("'%i-%i'", 3); + printf("(\"%%i-%%i\",3) : ");/* printf("'%i-%i'", 3);*/ printf(" not enough arguments\n\n"); - // printf("(\"%%-03i\",1) ft : "); ft_printf("'%-03i'\n", 1); - // printf("(\"%%-03i\",1) : "); printf("'%-03i'\n", 1); printf("\n"); + // printf("(\"%%-03i\",1) ft : "); ft_printf("'%-03i'", 1); + printf("(\"%%-03i\",1) : ");/* printf("'%-03i'", 1);*/ printf(" flag 0 is ignored when - is present\n\n"); - // printf("(\"%%010s\",str) ft : "); ft_printf("'%010s'\n", str); - // printf("(\"%%010s\",str) : "); printf("'%010s'\n", str); printf("\n"); + // printf("(\"%%010s\",str) ft : "); ft_printf("'%010s'", str); + printf("(\"%%010s\",str) : ");/* printf("'%010s'", str);*/ printf(" flag 0 has undefined behavior with s specifier\n\n"); - // printf("(\"%%-010s\",str) ft : "); ft_printf("'%-010s'\n", str); - // printf("(\"%%-010s\",str) : "); printf("'%-010s'\n", str); printf("\n"); + // printf("(\"%%.-7X\",8645) ft : "); ft_printf("'%.-7X'", 8645); + printf("(\"%%.-7X\",8645) : ");/* printf("'%.-7X'", 8645);*/ printf(" invalid flag - for .precision\n\n"); - // printf("(\"%%X\",124) ft : "); ft_printf("%X\n", 124); - // printf("(\"%%X\",1E240) : "); printf("%X\n", 1E240); printf("\n"); - - // printf("(\"%%010.7X\",8645) ft : "); ft_printf("'%010.7X'\n", 8645); - // printf("(\"%%010.7X\",8645) : "); printf("'%010.7X'\n", 8645); printf("\n"); - - // printf("(\"%%10.-7X\",8645) ft : "); ft_printf("'%10.-7X'\n", 8645); - // printf("(\"%%10.-7X\",8645) : "); printf("'%10.-7X'\n", 8645); printf("\n"); + // printf("(\"%%\",8645) ft : "); ft_printf("'%'", 8645); + printf("(\"%%\",8645) : ");/* printf("'%'", 8645);*/ printf(" missing conversion specifier\n\n"); return (0); }