debut ecriture process et ecriture erreurs

This commit is contained in:
Hugo LAMY
2020-01-05 20:15:29 +01:00
parent e57f8e1dc3
commit 40a409963d
2 changed files with 37 additions and 22 deletions

View File

@@ -54,7 +54,7 @@ conversions : cspdiuxX%
conversions : nfge conversions : nfge
flags : l,ll,h,hh,#,', ,+ 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 0,- ][width *][.precision *] [specifier d,i,u,x,X,c,s,p,% ]
% [flags #,', ,+] [length hh,h,ll,l ][specifier e,f,g,n ] % [flags #,', ,+] [length hh,h,ll,l ][specifier e,f,g,n ]
@@ -63,7 +63,7 @@ typedef struct s_prist
int print_nbr; int print_nbr;
int arg_nbr; int arg_nbr;
char specifier; char specifier;
char *flag; int flag; //['0','-','#',''',' ','+','*'] binary
int width; int width;
int precision; int precision;
char *arg; char *arg;
@@ -79,6 +79,8 @@ store
{printf_nbr 4; arg_nbr 4; specifier; flag; width; precision}, {printf_nbr 4; arg_nbr 4; specifier; flag; width; precision},
{printf_nbr 5; arg_nbr 3; specifier; flag; width; precision}} {printf_nbr 5; arg_nbr 3; specifier; flag; width; precision}}
check_more_error
sort_by_arg sort_by_arg
{{printf_nbr 2; arg_nbr 1; specifier; flag; width; precision}, {{printf_nbr 2; arg_nbr 1; specifier; flag; width; precision},
{printf_nbr 1; arg_nbr 2; 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}} {printf_nbr 4; arg_nbr 4; specifier; flag; width; precision}}
add_str_to_print 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 2; arg_nbr 1; specifier; flag; width; precision; arg},
{printf_nbr 1; arg_nbr 2; 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}, {printf_nbr 3; arg_nbr 3; specifier; flag; width; precision; arg},

52
main.c
View File

@@ -36,6 +36,21 @@ int main(void)
// printf("(\"%%%%\") ft : "); ft_printf("%%\n"); // printf("(\"%%%%\") ft : "); ft_printf("%%\n");
printf("(\"%%%%\") : "); printf("%%\n"); 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("(\"\\\"\") ft : "); ft_printf("\"\n");
printf("(\"\\\"\") : "); printf("\"\n"); 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) ft : "); ft_printf("'%.i'\n", 0);
printf("(\"%%.i\",0) : "); printf("'%.i'\n", 0); printf("\n"); 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("- flag * --------------------------------------\n\n");
// printf("(\"%%*i\",3,1) ft : "); ft_printf("'%*i'\n", 3, 1); // 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) 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("(\"%%2$*1$i\",3,2) : "); printf("'%2$*1$i'\n", 3, 2); printf("\n");
// printf("-----------------------------------------------\n"); printf("-----------------------------------------------\n");
// printf("- errors -\n"); printf("- errors -\n");
// printf("-----------------------------------------------\n\n"); printf("-----------------------------------------------\n\n");
// printf("(\"%%i\",3,2) ft : "); ft_printf("'%i'", 3, 2); // 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) ft : "); ft_printf("'%i-%i'", 3);
// printf("(\"%%i-%%i\",3) : "); printf("'%i-%i'", 3); printf(" [ERROR]\n\n"); 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) ft : "); ft_printf("'%-03i'", 1);
// printf("(\"%%-03i\",1) : "); printf("'%-03i'\n", 1); printf("\n"); 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) ft : "); ft_printf("'%010s'", str);
// printf("(\"%%010s\",str) : "); printf("'%010s'\n", str); printf("\n"); 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("(\"%%.-7X\",8645) ft : "); ft_printf("'%.-7X'", 8645);
// printf("(\"%%-010s\",str) : "); printf("'%-010s'\n", str); printf("\n"); printf("(\"%%.-7X\",8645) : ");/* printf("'%.-7X'", 8645);*/ printf(" invalid flag - for .precision\n\n");
// printf("(\"%%X\",124) ft : "); ft_printf("%X\n", 124); // printf("(\"%%\",8645) ft : "); ft_printf("'%'", 8645);
// printf("(\"%%X\",1E240) : "); printf("%X\n", 1E240); printf("\n"); printf("(\"%%\",8645) : ");/* printf("'%'", 8645);*/ printf(" missing conversion specifier\n\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");
return (0); return (0);
} }