From 5369c7712644e9583d5de41472dc9fa52af1b07a Mon Sep 17 00:00:00 2001 From: Hugo LAMY Date: Thu, 20 Feb 2020 19:06:16 +0100 Subject: [PATCH] conversion works --- Makefile | 3 +- ft_printf | Bin 18004 -> 38708 bytes ft_printf.c | 278 ----- main.c | 1632 ++++++++++++++----------- aside.c => srcs/aside.c | 4 +- ft_convert.c => srcs/ft_convert.c | 0 ft_next_word.c => srcs/ft_next_word.c | 0 7 files changed, 925 insertions(+), 992 deletions(-) rename aside.c => srcs/aside.c (95%) rename ft_convert.c => srcs/ft_convert.c (100%) rename ft_next_word.c => srcs/ft_next_word.c (100%) diff --git a/Makefile b/Makefile index 9faef73..3ba9b33 100644 --- a/Makefile +++ b/Makefile @@ -17,7 +17,8 @@ LIBS = $(_LIBS:lib%.a=%) SRCS = ft_printf.c \ ft_next_word.c \ aside.c \ - ft_convert.c + ft_convert.c \ + main.c ODIR = ./builds OBJS = $(SRCS:%.c=$(ODIR)/%.o) diff --git a/ft_printf b/ft_printf index dc86627defcf113cb70bc07b5b58fd5a3963c640..918e97934559bfa09af4831b91691af4a65670f7 100755 GIT binary patch literal 38708 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 BWRd^? delta 4283 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 C+zBB7 diff --git a/ft_printf.c b/ft_printf.c index f3688e9..0da9600 100644 --- a/ft_printf.c +++ b/ft_printf.c @@ -102,281 +102,3 @@ char *ft_flag_transform(char *s, char *print) // print = ft_alternate_form(print) // } */ - -int ft_printf_test(char *string, ...) -{ - va_list ap; - - va_start(ap, string); - printf("%s", string); - while (*string != '\0') - { - printf(" : "); - if (*string == 'd') - printf("%d", (int)va_arg(ap, long int)); - if (*string == 'i') - printf("%i", (int)va_arg(ap, long int)); - if (*string == 'u') - printf("%u", (unsigned int)va_arg(ap, int)); - if (*string == 'x') - printf("%x", (unsigned int)va_arg(ap, long int)); - if (*string == 'X') - printf("%X", (unsigned int)va_arg(ap, long int)); - if (*string == 'c') - printf("%c", (char)va_arg(ap, long int)); // var_arg promote char into int - if (*string == 's') - printf("%s", (char *)va_arg(ap, long int)); - if (*string == 'e') - printf("%e", va_arg(ap, double)); // va_arg promote float into double - if (*string == 'f') - printf("%f", va_arg(ap, double)); // va_arg promote float into double - if (*string == 'g') - printf("%g", va_arg(ap, double)); // va_arg promote float into double - if (*string == 'I') - printf("%li", (long int)va_arg(ap, long int)); - if (*string == 'U') - printf("%lu", (unsigned long int)va_arg(ap, long int)); - string++; - } - printf("\n"); - va_end(ap); - return (0); -} - -int main(int ac, char **av) -{ - char *str = "diuxXcsefg"; - int d = 123; - int i = 456; - unsigned int u = 345; - unsigned int x = 456; - unsigned int X = 567; - char c = 'c'; - char* s = "string"; -// p = ; - float e = 678; - float f = 789; - float g = 890; -// n = ; - char *str2 = "iiIIuU"; - int i1 = 2147483647; - int i2 = -2147483648; - long int i3 = 9223372036854775807; - long int i4 = -9223372036854775807; - unsigned int i5 = 4294967295; -// long unsigned int i6 = 18446744073709551615; - long unsigned int i6 = 8446744073709551615; - - if (ac == 1) - { -// printf("%s : %d : %i : %u : %x : %X : %c : %s : %e : %f : %g\n", str, d, i, u, x, X, c, s, e, f, g); -// ft_printf_test(str, d, i, u, x, X, c, s, e, f, g); -// printf("%s : %i : %i : %li : %li : %u : %lu\n", str2, i1, i2, i3, i4, i5, i6); -// ft_printf_test(str2, i1, i2, i3, i4, i5, i6); - - printf("sdf\n"); - ft_printf("sdf\n\n"); - printf("%i\n", 23); - ft_printf("%i\n\n", 23); - long int k = -23; - printf("%li\n", k); - ft_printf("%li\n\n", k); - printf("%i\n", -32); - ft_printf("%i\n\n", -32); - printf("%li\n", 9223372036854775807); - ft_printf("%li\n\n", 9223372036854775807); - printf("%c\n", 'f'); - ft_printf("%c\n\n", 'f'); - printf("%s\n", "sdffhk"); - ft_printf("%s\n\n", "sdffhk"); - printf("%u\n", 1221879); - ft_printf("%u\n\n", 1221879); - printf("%x\n", 3287); - ft_printf("%x\n\n", 3287); - printf("%lX\n", 9223372036854775807); - ft_printf("%lX\n\n", 9223372036854775807); - printf("%p\n", "dfgdf"); - ft_printf("%p\n\n", "dfgdf"); - } - return (0); -} - -/* -conversions : cspdiuxX% - flags : - 0 . * -conversions : nfge - flags : l ll h hh # ' (space) + - -%[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 ] - - - [flags] - - left-justify within the given field width - 0 left-pads the number with zeroes (0) instead of spaces, where - padding is specified (see width sub-specifier) - ( + forces to precede the result with a plus or minus sign even for - positive numbers) - ( (space) if no sign is going to be written, a blank space is inserted - before the value) - ( # (o, x, X, a, A, e, E, f, F, g, G) used with (o, x or X) the - value is preceded with 0, 0x or 0X for values different than - zero. used with (e, E or f), it forces the written output to - contain a decimal point even if no digits would follow. by - default, if no digits follow, no decimal point is written. used - with (g or G) the result is the same as with e or E but trailing - zeros are not removed - ( ' (d, u, i, f, F) used with d, u or i, or the integral portion of - a float f or F, the decimal conversions are printed by groups of - thousands separated by the non-monetary separator returned by - localeconv(3) (ex 123456789 -> 123,456,789) - - [width] - (nbr) minimum number of characters to be printed. if the value to be - printed is shorter than this number, the result is padded with - blank spaces. The value is not truncated even if the result is - larger - * the width is not specified in the format string, but as an - additional integer value argument preceding the argument that - has to be formatted - - [.precision] - .nbr fot integer specifiers (d,i,o,x,X) - precision specifies the - minimum number of digits to be written. If the value to be - written is shorter than this number, the result is padded with - leading zeros. The value is not truncated even if the result is - longer. A precision of 0 means that no character is written for - the value 0. For e, E and f specifiers − this is the number of - digits to be printed after the decimal point. For g and G - specifiers − This is the maximum number of significant digits - to be printed. For s − this is the maximum number of characters - to be printed. By default all characters are printed until the - ending null character is encountered. For c type − it has no - effect. When no precision is specified, the default is 1. If the - period is specified without an explicit value for precision, 0 - is assumed - .* the precision is not specified in the format string, but as an - additional integer value argument preceding the argument that - has to be formated - - [specifiers] - c char character - s *char string of characters - p * pointer adress - d int (or i) signed decimal integer - i int (or d) signed decimal integer - u u int unsigned decimal integer - x u int unsigned hexadecimal integer - X u int unsigned hexadecimal integer (capital letters) - ( n *int nothing printed - ( f float decimal floating point - ( e float scientific notation (mantissa/exponent) using e - ( g float uses the shorter of %e or %f - ((F float - ((E float scientific notation (mantissa/exponent) using E - ((G float uses the shorter of %E or %f - ((o int signed octal - ((C char treated as c with l modifier - ((a float - ((A float - ((S *char treated as s with l modifier - - -p == long unsigned int - -char 1bytes 8bits -short 2bytes 16bits -int 4bytes 32bits -long 8bytes 64bits -long long 8bytes 64bits - - 255 -127 - +127 00 [char] [hhd, hhi, c] [int] [d( , h, hh), i( , h, hh), c] - 65535 -32768 - +32767 01 [short] [hd, hi] [int] - 4294967295 -2147483648 - +2147483647 02 [int] [d, i] [int] -18446744073709551615 -9223372036854775808 - +9223372036854775807 04 [long] [ld, li] [long] [d(l ,ll), i(l, ll)] -18446744073709551615 -9223372036854775808 - +9223372036854775807 04 [long long] [lld, lli] [long] - 256 0 - +255 05 [unsigned char] [hhu, hhx, hhX] [unsigned int] [u( , h, hh), x( , h, hh), X( , h, hh), p] - 65536 0 - +65536 06 [unsigned short] [hu, hx, hX] [unsigned int] - 4294967296 0 - +4294967296 07 [unsigned int] [u, x, X, p] [unsigned int] -18446744073709551616 0 - +18446744073709551616 09 [unsigned long] [lu, lx, lX] [unsigned long] [s, u(l, ll), x(l, ll), X(l, ll)] -18446744073709551616 0 - +18446744073709551616 09 [unsigned long long] [llu, llx, llX] [unsigned long] -18446744073709551616 0 - +18446744073709551616 10 [char *] [s, hhn] [unsigned long] - -18446744073709551616 0 - +18446744073709551616 16 [double] [e, le, f, lf, g, lg] [] -18446744073709551616 0 - +18446744073709551616 17 [wint_t] [lc] [] -18446744073709551616 0 - +18446744073709551616 18 [wchar_t] [ls] [] -18446744073709551616 0 - +18446744073709551616 11 [short *] [hn] [] -18446744073709551616 0 - +18446744073709551616 12 [int *] [n] [] -18446744073709551616 0 - +18446744073709551616 13 [long *] [ln] [] -18446744073709551616 0 - +18446744073709551616 14 [long long *] [lln] [] - -d int 0 int -dhh char 1 char -dh short 2 short -dl long 3 long -dll long long 4 long long - -i int -ihh char -ih short -il long -ill long long - -u unsigned int 5 unsigned int -uhh unsigned char 6 unsigned char -uh unsigned short 7 unsigned short -ul unsigned long 8 unsigned long -ull unsigned long long 9 unsigned long long - -x unsigned int -xhh unsigned char -xh unsigned short -xl unsigned long -xll unsigned long long - -X unsigned int -Xhh unsigned char -Xh unsigned short -Xl unsigned long -Xll unsigned long long - -c char -> int -cl wint_t 10 wint_t -s char * 11 char * -sl wchar_t * 12 wchar_t * -p unsigned int -e double 13 double -el -f double -fl -g double -gl - -n int * 14 int * -nhh char * -nh short * 15 short * -nl long * 16 long * -nll long long * 17 long long * - - - printf("char %lu\n", sizeof(char)); - printf("short %lu\n", sizeof(short)); - printf("int %lu\n", sizeof(int)); - printf("long %lu\n", sizeof(long)); - printf("long long %lu\n", sizeof(long long)); - printf("unsigned char %lu\n", sizeof(unsigned char)); - printf("unsigned short %lu\n", sizeof(unsigned short)); - printf("unsigned int %lu\n", sizeof(unsigned int)); - printf("unsigned long %lu\n", sizeof(unsigned long)); - printf("unsigned long long %lu\n", sizeof(unsigned long long)); - printf("char * %lu\n", sizeof(char *)); - printf("short * %lu\n", sizeof(short *)); - printf("int * %lu\n", sizeof(int *)); - printf("long * %lu\n", sizeof(long *)); - printf("long long * %lu\n", sizeof(long long *)); - printf("double %lu\n", sizeof(double)); -// printf("wint_t %lu\n", sizeof(wint_t)); -// printf("wchar_T %lu\n", sizeof(wchar_t)); - -*/ diff --git a/main.c b/main.c index 6e1f8bc..3bc34e1 100644 --- a/main.c +++ b/main.c @@ -2,721 +2,931 @@ #include #include -int main(void) +int ft_printf_test(char *string, ...) { - char *str; - char c; - int i; - - setlocale(LC_ALL, "en_US.UTF-8"); - str = "bravo"; - c = 'c'; - i = 6; - - printf("-----------------------------------------------\n"); - printf("- BASICS -\n"); - printf("- -\n"); - printf("- %%[flag][width][.precision][length]specifier -\n"); - printf("- -\n"); - printf("- conversions : cspdiuxX%% -\n"); - printf("- flags : -,0,.,* -\n"); - printf("- taille de champ minimale -\n"); - printf("- -\n"); - printf("- char *str = \"bravo\"; -\n"); - printf("- char c = 'c'; -\n"); - printf("- int i = 6; -\n"); - printf("-----------------------------------------------\n"); - printf("-----------------------------------------------\n"); - printf("- conversions : cspdiuxX%% -\n"); - printf("-----------------------------------------------\n\n"); - - // printf("(\"no newline\") ft : "); ft_printf("no newline"); printf("-->ligne suivante\n"); - printf("(\"no newline\") : "); printf("no newline"); printf("-->ligne suivante\n"); printf("\n"); - - // printf("(\"newline\\n\") ft : "); ft_printf("newline\n"); printf("-->ligne suivante\n"); - printf("(\"newline\\n\") : "); printf("newline\n"); printf("-->ligne suivante\n"); printf("\n"); - - // 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"); - - // printf("(\"%%c\",'c') ft : "); ft_printf("%c\n", 'c'); - printf("(\"%%c\",'c') : "); printf("%c\n", 'c'); printf("\n"); - - // printf("(\"%%s\",\"str\") ft : "); ft_printf("%s\n", "str"); - printf("(\"%%s\",\"str\") : "); printf("%s\n", "str"); printf("\n"); - - // printf("(\"%%s\",str) ft : "); ft_printf("%s\n", str); - printf("(\"%%s\",str) : "); printf("%s\n", str); printf("\n"); - - // printf("(\"%%p\",str) ft : "); ft_printf("%p\n", str); - printf("(\"%%p\",str) : "); printf("%p\n", str); printf("\n"); - - // printf("(\"%%d\",456) ft : "); ft_printf("%d\n", 456); - printf("(\"%%d\",456) : "); printf("%d\n", 456); printf("\n"); - - // printf("(\"%%i\",846) ft : "); ft_printf("%i\n", 846); - printf("(\"%%i\",846) : "); printf("%i\n", 846); printf("\n"); - - // printf("(\"%%u\",87) ft : "); ft_printf("%u\n", 87); - printf("(\"%%u\",87) : "); printf("%u\n", 87); printf("\n"); - - // printf("(\"%%u\",-87) ft : "); ft_printf("%u\n", -87); - printf("(\"%%u\",-87) : "); printf("%u\n", -87); printf("\n"); - - // printf("(\"%%x\",124) ft : "); ft_printf("%x\n", 124); - printf("(\"%%x\",124) : "); printf("%x\n", 124); printf("\n"); - - // printf("(\"%%X\",124) ft : "); ft_printf("%X\n", 124); - printf("(\"%%X\",124) : "); printf("%X\n", 124); printf("\n"); - - // printf("(\"%%X\",123456) ft : "); ft_printf("%X\n", 123456); - printf("(\"%%X\",123456) : "); printf("%X\n", 123456); printf("\n"); - - // printf("(\"%%X\",0x1E240) ft : "); ft_printf("%X\n", 0x1E240); - printf("(\"%%X\",0x1E240) : "); printf("%X\n", 0x1E240); printf("\n"); - - // printf("(\"%%i\",0x1E240) ft : "); ft_printf("%i\n", 0x1E240); - printf("(\"%%i\",0x1E240) : "); printf("%i\n", 0x1E240); printf("\n"); - - printf("-----------------------------------------------\n"); - printf("- flags : -0.* -\n"); - printf("- taille de champ minimale -\n"); - printf("-----------------------------------------------\n\n"); - - printf("- taille de champ minimale --------------------\n\n"); - - // printf("(\"%%3s\",\"a\") ft : "); ft_printf("'%3s'\n", "a"); - printf("(\"%%3s\",\"a\") : "); printf("'%3s'\n", "a"); printf("\n"); - - // printf("(\"%%3s\",\"abcd\") ft : "); ft_printf("'%3s'\n", "abcd"); - printf("(\"%%3s\",\"abcd\") : "); printf("'%3s'\n", "abcd"); printf("\n"); - - // printf("(\"%%3i\",12) ft : "); ft_printf("'%3i'\n", 12); - printf("(\"%%3i\",12) : "); printf("'%3i'\n", 12); printf("\n"); - - // printf("(\"%%2i\",12) ft : "); ft_printf("'%2i'\n", 12); - printf("(\"%%2i\",12) : "); printf("'%2i'\n", 12); printf("\n"); - - // printf("(\"%%1i\",12) ft : "); ft_printf("'%1i'\n", 12); - printf("(\"%%1i\",12) : "); printf("'%1i'\n", 12); printf("\n"); - - // printf("(\"%%0i\",0) ft : "); ft_printf("'%0i'\n", 0); - printf("(\"%%0i\",0) : "); printf("'%0i'\n", 0); printf("\n"); - - // printf("(\"%%6i\",-456) ft : "); ft_printf("'%6i'\n", -456); - printf("(\"%%6i\",-456) : "); printf("'%6i'\n", -456); printf("\n"); - - // printf("(\"%%6%%\") ft : "); ft_printf("'%6%'\n"); - printf("(\"%%6%%\") : "); printf("'%6%'\n"); printf("\n"); - - printf("- flag - --------------------------------------\n\n"); - - // printf("(\"%%-3s\",\"a\") ft : "); ft_printf("'%-3s'\n", "a"); - printf("(\"%%-3s\",\"a\") : "); printf("'%-3s'\n", "a"); printf("\n"); - - // printf("(\"%%-9s\",\"a\") ft : "); ft_printf("'%-9s'\n", "a"); - printf("(\"%%-9s\",\"a\") : "); printf("'%-9s'\n", "a"); printf("\n"); - - // printf("(\"%%-1s\",\"ab\") ft : "); ft_printf("'%-1s'\n", "ab"); - printf("(\"%%-1s\",\"ab\") : "); printf("'%-1s'\n", "ab"); printf("\n"); - - // printf("(\"%%-2s\",\"ab\") ft : "); ft_printf("'%-2s'\n", "ab"); - printf("(\"%%-2s\",\"ab\") : "); printf("'%-2s'\n", "ab"); printf("\n"); - - // printf("(\"%%-3s\",\"ab\") ft : "); ft_printf("'%-3s'\n", "ab"); - printf("(\"%%-3s\",\"ab\") : "); printf("'%-3s'\n", "ab"); printf("\n"); - - // printf("(\"%%-3i\",3) ft : "); ft_printf("'%-3i'\n", 3); - printf("(\"%%-3i\",3) : "); printf("'%-3i'\n", 3); printf("\n"); - - // printf("(\"%%-3i\",123456) ft : "); ft_printf("'%-3i'\n", 123456); - printf("(\"%%-3i\",123456) : "); printf("'%-3i'\n", 123456); printf("\n"); - - printf("- flag 0 (diouxX%%)------------------------------\n"); - printf("- \n"); - - // printf("(\"%%03i\",1) ft : "); ft_printf("'%03i'\n", 1); - printf("(\"%%03i\",1) : "); printf("'%03i'\n", 1); printf("\n"); - - // printf("(\"%%03u\",1) ft : "); ft_printf("'%03u'\n", 1); - printf("(\"%%03u\",1) : "); printf("'%03u'\n", 1); printf("\n"); - - // printf("(\"%%03x\",1) ft : "); ft_printf("'%03x'\n", 1); - printf("(\"%%03x\",1) : "); printf("'%03x'\n", 1); printf("\n"); - - // printf("(\"%%03%%\") ft : "); ft_printf("'%03%'\n"); - printf("(\"%%03%%\") : "); printf("'%03%'\n"); printf("\n"); - - // printf("(\"%%0%%\") ft : "); ft_printf("'%0%'\n"); - printf("(\"%%0%%\") : "); printf("'%0%'\n"); printf("\n"); - - printf("- flag . (diouxXs) ----------------------------------------------------------\n"); - printf("- if the . is not followed by a number, the value is 0\n"); - printf("- with arg value of 0, precision of 0 print nothing\n"); - printf("- with numbers (diouxX), gives the minimum number of digit to appear\n"); - printf("- if precision > nbr, it's preceded by '0'\n"); - printf("- if nbr < 0, '-' is not counted in precision\n"); - printf("- (length with '-' is (length(nbr or precision) + 1)'\n"); - printf("- if 0 flag is given (for width or precision) it's ignored\n"); - printf("- with strings (s), gives the maximum number of characters to be print\n"); - printf("- if precision > length(s), it's not preceded by '0'\n"); - printf("- precision is calculated before width\n"); - printf("\n"); - - // printf("(\"%%.5s\",\"12\") ft : "); ft_printf("'%.5s'\n", "12"); - printf("(\"%%.5s\",\"12\") : "); printf("'%.5s'\n", "12"); printf("\n"); - - // printf("(\"%%.5s\",\"12345678\") ft : "); ft_printf("'%.5s'\n", "12345678"); - printf("(\"%%.5s\",\"12345678\") : "); printf("'%.5s'\n", "12345678"); printf("\n"); - - // printf("(\"%%12.5s\",\"12345678\") ft : "); ft_printf("'%12.5s'\n", "12345678"); - printf("(\"%%12.5s\",\"12345678\") : "); printf("'%12.5s'\n", "12345678"); printf("\n"); - - // printf("(\"%%.5i\",12) ft : "); ft_printf("'%.5i'\n", 12); - printf("(\"%%.5i\",12) : "); printf("'%.5i'\n", 12); printf("\n"); - - // printf("(\"%%.7X\",8645) ft : "); ft_printf("'%.7X'\n", 8645); - printf("(\"%%.7X\",8645) : "); printf("'%.7X'\n", 8645); printf("\n"); - - // printf("(\"%%7.7X\",8645) ft : "); ft_printf("'%7.7X'\n", 8645); - printf("(\"%%7.7X\",8645) : "); printf("'%7.7X'\n", 8645); printf("\n"); - - // printf("(\"%%9.7X\",8645) ft : "); ft_printf("'%9.7X'\n", 8645); - printf("(\"%%9.7X\",8645) : "); printf("'%9.7X'\n", 8645); printf("\n"); - - // printf("(\"%%-9.7X\",8645) ft : "); ft_printf("'%-9.7X'\n", 8645); - printf("(\"%%-9.7X\",8645) : "); printf("'%-9.7X'\n", 8645); printf("\n"); - - // printf("(\"%%7.9X\",8645) ft : "); ft_printf("'%7.9X'\n", 8645); - printf("(\"%%7.9X\",8645) : "); printf("'%7.9X'\n", 8645); printf("\n"); - - // printf("(\"%%.0i\",0) ft : "); ft_printf("'%.0i'\n", 0); - printf("(\"%%.0i\",0) : "); printf("'%.0i'\n", 0); printf("\n"); - - // printf("(\"%%.0X\",0) ft : "); ft_printf("'%.0X'\n", 0); - printf("(\"%%.0X\",0) : "); printf("'%.0X'\n", 0); printf("\n"); - - // printf("(\"%%.i\",0) ft : "); ft_printf("'%.i'\n", 0); - printf("(\"%%.i\",0) : "); printf("'%.i'\n", 0); printf("\n"); - - // 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("(\"%%10.7X\",8645) ft : "); ft_printf("'%10.7X'\n", 8645); - printf("(\"%%10.7X\",8645) : "); printf("'%10.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("(\"%%-.7i\",8645) ft : "); ft_printf("'%-.7i'\n", 8645); - printf("(\"%%-.7i\",8645) : "); printf("'%-.7i'\n", 8645); printf("\n"); - - // printf("(\"%%.7i\",-8645) ft : "); ft_printf("'%.7i'\n", -8645); - printf("(\"%%.7i\",-8645) : "); printf("'%.7i'\n", -8645); printf("\n"); - - // printf("(\"%%.07i\",8645) ft : "); ft_printf("'%.07i'\n", 8645); - printf("(\"%%.07i\",8645) : "); printf("'%.07i'\n", 8645); printf("\n"); - - // printf("(\"%%.7%%\") ft : "); ft_printf("'%.7%'\n"); - printf("(\"%%.7%%\") : "); printf("'%.7%'\n"); printf("\n"); - - printf("- flag * --------------------------------------\n\n"); - - // printf("(\"%%*i\",3,1) ft : "); ft_printf("'%*i'\n", 3, 1); - printf("(\"%%*i\",3,1) : "); printf("'%*i'\n", 3, 1); printf("\n"); - - // printf("(\"%%-*i\",3,1) ft : "); ft_printf("'%-*i'\n", 3, 1); - printf("(\"%%-*i\",3,1) : "); printf("'%-*i'\n", 3, 1); printf("\n"); - - // printf("(\"%%*i-%%*i\",1,2,3,4) ft : "); ft_printf("'%*i-%*i'\n", 1, 2, 3, 4); - printf("(\"%%*i-%%*i\",1,2,3,4) : "); printf("'%*i-%*i'\n", 1, 2, 3, 4); printf("\n"); - - // printf("(\"%%*i-%%*i\",0,1,2,3) ft : "); ft_printf("'%*i-%*i'\n", 0, 1, 2, 3); - printf("(\"%%*i-%%*i\",0,1,2,3) : "); printf("'%*i-%*i'\n", 0, 1, 2, 3); printf("\n"); - - // printf("(\"%%.*i-%%.*i\",0,1,2,3) ft : "); ft_printf("'%.*i-%.*i'\n", 0, 1, 2, 3); - printf("(\"%%.*i-%%.*i\",0,1,2,3) : "); printf("'%.*i-%.*i'\n", 0, 1, 2, 3); printf("\n"); - - // printf("(\"%%3.2i\",1) ft : "); ft_printf("'%3.2i'\n", 1); - printf("(\"%%3.2i\",1) : "); printf("'%3.2i'\n", 1); printf("\n"); - - // printf("(\"%%*.*i\",3,2,1) ft : "); ft_printf("'%*.*i'\n", 3, 2, 1); - printf("(\"%%*.*i\",3,2,1) : "); printf("'%*.*i'\n", 3, 2, 1); printf("\n"); - - printf("-----------------------------------------------\n"); - printf("- TESTS REPETITIONS -\n"); - printf("- nbr of [#0-+ '] -\n"); - printf("-----------------------------------------------\n\n"); - - printf("(\"%%i'\", 33333) : "); printf("'%i'\n", 33333); printf("\n"); - - printf("(\"%%.0f\", 33333.0) : "); printf("'%.0f'\n", 33333.0); printf("\n"); - - printf("(\"%%#.0f\", 33333.0) : "); printf("'%#.0f'\n", 33333.0); printf("\n"); - - printf("(\"%%08i\", 33333) : "); printf("'%08i'\n", 33333); printf("\n"); - - printf("(\"%%-8i\", 33333) : "); printf("'%-8i'\n", 33333); printf("\n"); - - printf("(\"%%+i\", 33333) : "); printf("'%+i'\n", 33333); printf("\n"); - - printf("(\"%% i\", 33333) : "); printf("'% i'\n", 33333); printf("\n"); - - printf("(\"%%'i\", 33333) : "); printf("'%'i'\n", 33333); printf("\n"); - - printf("- repetition with ''' -------------------------\n"); - printf("- (repeatable additionable unordered) rau -----\n\n"); - - printf("(\"%%''''i\", 33333) : "); printf("'%''''i'\n", 33333); printf("\n"); - - printf("(\"%%'#.0f\", 33333.0) : "); printf("'%'#.0f'\n", 33333.0); printf("\n"); - - printf("(\"%%#'.0f\", 33333.0) : "); printf("'%#'.0f'\n", 33333.0); printf("\n"); - - printf("(\"%%'#'.0f\", 33333.0) : "); printf("'%'#'.0f'\n", 33333.0); printf("\n"); - - printf("(\"%%'08i\", 33333) : "); printf("'%'08i'\n", 33333); printf("\n"); - - printf("(\"%%0'8i\", 33333) : "); printf("'%0'8i'\n", 33333); printf("\n"); - - printf("(\"%%'0'8i\", 33333) : "); printf("'%'0'8i'\n", 33333); printf("\n"); - - printf("(\"%%'-8i\", 33333) : "); printf("'%'-8i'\n", 33333); printf("\n"); - - printf("(\"%%-'8i\", 33333) : "); printf("'%-'8i'\n", 33333); printf("\n"); - - printf("(\"%%'-'8i\", 33333) : "); printf("'%'-'8i'\n", 33333); printf("\n"); - - printf("(\"%%'+i\", 33333) : "); printf("'%'+i'\n", 33333); printf("\n"); - - printf("(\"%%+'i\", 33333) : "); printf("'%+'i'\n", 33333); printf("\n"); - - printf("(\"%%'+'i\", 33333) : "); printf("'%'+'i'\n", 33333); printf("\n"); - - printf("(\"%%' i\", 33333) : "); printf("'%' i'\n", 33333); printf("\n"); - - printf("(\"%% 'i\", 33333) : "); printf("'% 'i'\n", 33333); printf("\n"); - - printf("(\"%%' 'i\", 33333) : "); printf("'%' 'i'\n", 33333); printf("\n"); - - printf("- repetition with ' ' -------------------------\n"); - printf("- '+' and ' ' not compatible ------------------\n"); - printf("- rau -----------------------------------------\n\n"); - - printf("(\"%% i\", 33333) : "); printf("'% i'\n", 33333); printf("\n"); - - printf("(\"%% #.0f\", 33333.0) : "); printf("'% #.0f'\n", 33333.0); printf("\n"); - - printf("(\"%%# .0f\", 33333.0) : "); printf("'%# .0f'\n", 33333.0); printf("\n"); - - printf("(\"%% # .0f\", 33333.0) : "); printf("'% # .0f'\n", 33333.0); printf("\n"); - - printf("(\"%% 08i\", 33333) : "); printf("'% 08i'\n", 33333); printf("\n"); - - printf("(\"%%0 8i\", 33333) : "); printf("'%0 8i'\n", 33333); printf("\n"); - - printf("(\"%% 0 8i\", 33333) : "); printf("'% 0 8i'\n", 33333); printf("\n"); - - printf("(\"%% -8i\", 33333) : "); printf("'% -8i'\n", 33333); printf("\n"); - - printf("(\"%%- 8i\", 33333) : "); printf("'%- 8i'\n", 33333); printf("\n"); - - printf("(\"%% - 8i\", 33333) : "); printf("'% - 8i'\n", 33333); printf("\n"); - - printf("(\"%% 'i\", 33333) : "); printf("'% 'i'\n", 33333); printf("\n"); - - printf("(\"%%' i\", 33333) : "); printf("'%' i'\n", 33333); printf("\n"); - - printf("(\"%% ' i\", 33333) : "); printf("'% ' i'\n", 33333); printf("\n"); - - printf("- repetition with '-' -------------------------\n"); - printf("- '0' and '-' not compatible ------------------\n"); - printf("- rau -----------------------------------------\n\n"); - - printf("(\"%%----i\", 33333) : "); printf("'%----i'\n", 33333); printf("\n"); - - printf("(\"%%-#.0f\", 33333.0) : "); printf("'%-#.0f'\n", 33333.0); printf("\n"); - - printf("(\"%%#-.0f\", 33333.0) : "); printf("'%#-.0f'\n", 33333.0); printf("\n"); - - printf("(\"%%-#-.0f\", 33333.0) : "); printf("'%-#-.0f'\n", 33333.0); printf("\n"); - - printf("(\"%%-+8i\", 33333) : "); printf("'%-+8i'\n", 33333); printf("\n"); - - printf("(\"%%+-8i\", 33333) : "); printf("'%+-8i'\n", 33333); printf("\n"); - - printf("(\"%%-+-8i\", 33333) : "); printf("'%-+-8i'\n", 33333); printf("\n"); - - printf("(\"%%- i\", 33333) : "); printf("'%- i'\n", 33333); printf("\n"); - - printf("(\"%% -i\", 33333) : "); printf("'% -i'\n", 33333); printf("\n"); - - printf("(\"%%- -i\", 33333) : "); printf("'%- -i'\n", 33333); printf("\n"); - - printf("(\"%%-'i\", 33333) : "); printf("'%-'i'\n", 33333); printf("\n"); - - printf("(\"%%'-i\", 33333) : "); printf("'%'-i'\n", 33333); printf("\n"); - - printf("(\"%%-'-i\", 33333) : "); printf("'%-'-i'\n", 33333); printf("\n"); - - printf("- repetition with '+' -------------------------\n"); - printf("- '+' and ' ' not compatible ------------------\n"); - printf("- rau -----------------------------------------\n\n"); - - printf("(\"%%++++i\", 33333) : "); printf("'%++++i'\n", 33333); printf("\n"); - - printf("(\"%%+#.0f\", 33333.0) : "); printf("'%+#.0f'\n", 33333.0); printf("\n"); - - printf("(\"%%#+.0f\", 33333.0) : "); printf("'%#+.0f'\n", 33333.0); printf("\n"); - - printf("(\"%%+#+.0f\", 33333.0) : "); printf("'%+#+.0f'\n", 33333.0); printf("\n"); - - printf("(\"%%+08i\", 33333) : "); printf("'%+08i'\n", 33333); printf("\n"); - - printf("(\"%%0+8i\", 33333) : "); printf("'%0+8i'\n", 33333); printf("\n"); - - printf("(\"%%+0+8i\", 33333) : "); printf("'%+0+8i'\n", 33333); printf("\n"); - - printf("(\"%%+-8i\", 33333) : "); printf("'%+-8i'\n", 33333); printf("\n"); - - printf("(\"%%-+8i\", 33333) : "); printf("'%-+8i'\n", 33333); printf("\n"); - - printf("(\"%%+-+8i\", 33333) : "); printf("'%+-+8i'\n", 33333); printf("\n"); - - printf("(\"%%+'i\", 33333) : "); printf("'%+'i'\n", 33333); printf("\n"); - - printf("(\"%%'+i\", 33333) : "); printf("'%'+i'\n", 33333); printf("\n"); - - printf("(\"%%+'+i\", 33333) : "); printf("'%+'+i'\n", 33333); printf("\n"); - - printf("- repetition with '#' -------------------------\n"); - printf("- rau -----------------------------------------\n\n"); - - printf("(\"%%####f\", 33333.0) : "); printf("'%####f'\n", 33333.0); printf("\n"); - - printf("(\"%%#+.0f\", 33333.0) : "); printf("'%#+.0f'\n", 33333.0); printf("\n"); - - printf("(\"%%+#.0f\", 33333.0) : "); printf("'%+#.0f'\n", 33333.0); printf("\n"); - - printf("(\"%%#+#.0f\", 33333.0) : "); printf("'%#+#.0f'\n", 33333.0); printf("\n"); - - printf("(\"%%#08f\", 33333.0) : "); printf("'%#08f'\n", 33333.0); printf("\n"); - - printf("(\"%%0#8f\", 33333.0) : "); printf("'%0#8f'\n", 33333.0); printf("\n"); - - printf("(\"%%#0#8f\", 33333.0) : "); printf("'%#0#8f'\n", 33333.0); printf("\n"); - - printf("(\"%%#-8f\", 33333.0) : "); printf("'%#-8f'\n", 33333.0); printf("\n"); - - printf("(\"%%-#8f\", 33333.0) : "); printf("'%-#8f'\n", 33333.0); printf("\n"); - - printf("(\"%%#-#8f\", 33333.0) : "); printf("'%#-#8f'\n", 33333.0); printf("\n"); - - printf("(\"%%#'f\", 33333.0) : "); printf("'%#'f'\n", 33333.0); printf("\n"); - - printf("(\"%%'#f\", 33333.0) : "); printf("'%'#f'\n", 33333.0); printf("\n"); - - printf("(\"%%#'#f\", 33333.0) : "); printf("'%#'#f'\n", 33333.0); printf("\n"); - - printf("(\"%%# f\", 33333.0) : "); printf("'%# f'\n", 33333.0); printf("\n"); - - printf("(\"%% #f\", 33333.0) : "); printf("'% #f'\n", 33333.0); printf("\n"); - - printf("(\"%%# #f\", 33333.0) : "); printf("'%# #f'\n", 33333.0); printf("\n"); - - printf("- repetition with '0' -------------------------\n"); - printf("- '0' and '-' not compatible ------------------\n"); - printf("- rau -----------------------------------------\n\n"); - - printf("(\"%%0000i\", 33333) : "); printf("'%0000i'\n", 33333); printf("\n"); - - printf("(\"%%0#.0f\", 33333.0) : "); printf("'%0#.0f'\n", 33333.0); printf("\n"); - - printf("(\"%%#0.0f\", 33333.0) : "); printf("'%#0.0f'\n", 33333.0); printf("\n"); - - printf("(\"%%0#0.0f\", 33333.0) : "); printf("'%0#0.0f'\n", 33333.0); printf("\n"); - - printf("(\"%%0+8i\", 33333) : "); printf("'%0+8i'\n", 33333); printf("\n"); - - printf("(\"%%+08i\", 33333) : "); printf("'%+08i'\n", 33333); printf("\n"); - - printf("(\"%%0+08i\", 33333) : "); printf("'%0+08i'\n", 33333); printf("\n"); - - printf("(\"%%0 i\", 33333) : "); printf("'%0 i'\n", 33333); printf("\n"); - - printf("(\"%% 0i\", 33333) : "); printf("'% 0i'\n", 33333); printf("\n"); - - printf("(\"%%0 0i\", 33333) : "); printf("'%0 0i'\n", 33333); printf("\n"); - - printf("(\"%%0'i\", 33333) : "); printf("'%0'i'\n", 33333); printf("\n"); - - printf("(\"%%'0i\", 33333) : "); printf("'%'0i'\n", 33333); printf("\n"); - - printf("(\"%%0'0i\", 33333) : "); printf("'%0'0i'\n", 33333); printf("\n"); - - - // printf("-----------------------------------------------\n"); - // printf("- BONUS -\n"); - // printf("- conversions : nfge -\n"); - // printf("- flags : l,ll,h,hh,#,', ,+ -\n"); - // printf("-----------------------------------------------\n\n"); - - // printf("(\"%%#X\",8645) : "); - // printf("'%#X' \n", 8645); - // - // printf("(\"%%#.7X\",8645) : "); - // printf("'%#.7X' \n", 8645); - // - // printf("(\"%%#010.7X\",8645) : "); - // printf("'%#010.7X' \n", 8645); - // - // printf("(\"%%#10.7X\",8645) : "); - // printf("'%#10.7X' \n", 8645); - // - // printf("(\"%%#10X\",8645) : "); - // printf("'%#10X' \n", 8645); - // - // printf("(\"%%#.10X\",8645) : "); - // printf("'%#.10X' \n", 8645); - // - // printf("(\"%%#10.10X\",8645) : "); - // printf("'%#10.10X' \n", 8645); - // - // printf("(\"%%#010X\",8645) : "); - // printf("'%#010X' \n", 8645); - - // printf("-----------------------------------------------\n"); - // printf("- ADD -\n"); - // printf("- flags : $ -\n"); - // printf("-----------------------------------------------\n\n"); - - // printf("(\"%%1$*2$i\",3,2) ft : "); ft_printf("'%1$*2$i'\n", 3, 2); - // printf("(\"%%1$*2$i\",3,2) : "); printf("'%1$*2$i'\n", 3, 2); printf("\n"); - - // 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("(\"%%i\",3,2) ft : "); ft_printf("'%i'", 3, 2); - 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(" not enough arguments\n\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'", str); - printf("(\"%%010s\",str) : ");/* printf("'%010s'", str);*/ printf(" flag 0 has undefined behavior with s specifier\n\n"); - - // printf("(\"%%010c\",c) ft : "); ft_printf("'%010c'", c); - printf("(\"%%010c\",c) : ");/* printf("'%010c'", c);*/ printf(" flag 0 has undefined behavior with c specifier\n\n"); - - // printf("(\"%%03p\",str) ft : "); ft_printf("'%03p'\n", str); - printf("(\"%%03p\",str) : ");/* printf("'%03p'\n", str);*/ printf(" flag 0 has undefined behavior with p specifier\n\n"); - - // printf("(\"%%.-7X\",8645) ft : "); ft_printf("'%.-7X'", 8645); - printf("(\"%%.-7X\",8645) : ");/* printf("'%.-7X'", 8645);*/ printf(" invalid flag - for .precision\n\n"); - - // printf("(\"%%\",8645) ft : "); ft_printf("'%'", 8645); - printf("(\"%%\",8645) : ");/* printf("'%'", 8645);*/ printf(" missing conversion specifier\n\n"); - - // printf("(\"%%2$i-%%i\",3,2) ft : "); ft_printf("'%2$i-%i'\n", 3, 2); - printf("(\"%%2$i-%%i\",3,2) : ");/* printf("'%2$i-%i'", 3, 2);*/ printf(" cannot mix positioned and non-positioned args\n\n"); - -// printf("(\"%% +i\", 33 : "); ft_printf("'% +i'\n", 33); - printf("(\"%% +i\", 33 : ");/* printf("'% +i'\n", 33);*/ printf(" flag ' ' is ignored when '+' is present\n\n"); - -// printf("(\"%%-0i\", 33 : "); ft_printf("'%-+i'\n", 33); - printf("(\"%%-0i\", 33 : ");/* printf("'%-0i'\n", 33);*/ printf(" flag '0' is ignored when '-' is present\n\n"); - + va_list ap; + + va_start(ap, string); + printf("%s", string); + while (*string != '\0') + { + printf(" : "); + if (*string == 'd') + printf("%d", (int)va_arg(ap, long int)); + if (*string == 'i') + printf("%i", (int)va_arg(ap, long int)); + if (*string == 'u') + printf("%u", (unsigned int)va_arg(ap, int)); + if (*string == 'x') + printf("%x", (unsigned int)va_arg(ap, long int)); + if (*string == 'X') + printf("%X", (unsigned int)va_arg(ap, long int)); + if (*string == 'c') + printf("%c", (char)va_arg(ap, long int)); // var_arg promote char into int + if (*string == 's') + printf("%s", (char *)va_arg(ap, long int)); + if (*string == 'e') + printf("%e", va_arg(ap, double)); // va_arg promote float into double + if (*string == 'f') + printf("%f", va_arg(ap, double)); // va_arg promote float into double + if (*string == 'g') + printf("%g", va_arg(ap, double)); // va_arg promote float into double + if (*string == 'I') + printf("%li", (long int)va_arg(ap, long int)); + if (*string == 'U') + printf("%lu", (unsigned long int)va_arg(ap, long int)); + string++; + } + printf("\n"); + va_end(ap); + return (0); +} + +int main(int ac, char **av) +{ + /* ////////////////////////////////////////////////////////////////// */ + /* PREMISES TESTS WITH AV_ARG BASED ON MAN EXEMPLE */ + /* ////////////////////////////////////////////////////////////////// */ + + if (ac == 2 && !strcmp(av[1], "man")) + { + char *str = "diuxXcsefg"; + int d = 123; + int i = 456; + unsigned int u = 345; + unsigned int x = 456; + unsigned int X = 567; + char c = 'c'; + char* s = "string"; + // p = ; + float e = 678; + float f = 789; + float g = 890; + // n = ; + char *str2 = "iiIIuU"; + int i1 = 2147483647; + int i2 = -2147483648; + long int i3 = 9223372036854775807; + long int i4 = -9223372036854775807; + unsigned int i5 = 4294967295; + //long unsigned int i6 = 18446744073709551615; + long unsigned int i6 = 8446744073709551615; + + // test one of each specifiers + printf("%s : %d : %i : %u : %x : %X : %c : %s : %e : %f : %g\n", str, d, i, u, x, X, c, s, e, f, g); + ft_printf_test(str, d, i, u, x, X, c, s, e, f, g); + // test all different size of int types + printf("%s : %i : %i : %li : %li : %u : %lu\n", str2, i1, i2, i3, i4, i5, i6); + ft_printf_test(str2, i1, i2, i3, i4, i5, i6); + } + + /* ////////////////////////////////////////////////////////////////// */ + /* TESTS WHILE BUILDING THE PROGRAM */ + /* ////////////////////////////////////////////////////////////////// */ + + if (ac == 2 && !strcmp(av[1], "test")) + { + printf("sdf\n"); + ft_printf("sdf\n\n"); + printf("%i\n", 23); + ft_printf("%i\n\n", 23); + long int k = -23; + printf("%li\n", k); + ft_printf("%li\n\n", k); + printf("%i\n", -32); + ft_printf("%i\n\n", -32); + printf("%li\n", 9223372036854775807); + ft_printf("%li\n\n", 9223372036854775807); + printf("%c\n", 'f'); + ft_printf("%c\n\n", 'f'); + printf("%s\n", "sdffhk"); + ft_printf("%s\n\n", "sdffhk"); + printf("%u\n", 1221879); + ft_printf("%u\n\n", 1221879); + printf("%x\n", 3287); + ft_printf("%x\n\n", 3287); + printf("%lX\n", 9223372036854775807); + ft_printf("%lX\n\n", 9223372036854775807); + printf("%p\n", "dfgdf"); + ft_printf("%p\n\n", "dfgdf"); + } + + /* ////////////////////////////////////////////////////////////////// */ + /* COMPLETE TESTS SERIES */ + /* 557gj */ + /* ////////////////////////////////////////////////////////////////// */ + + if (ac == 2 && !strcmp(av[1], "all")) + { + char *str; + char c; + int i; + + setlocale(LC_ALL, "en_US.UTF-8"); + str = "bravo"; + c = 'c'; + i = 6; + + printf("-----------------------------------------------\n"); + printf("- BASICS -\n"); + printf("- -\n"); + printf("- %%[flag][width][.precision][length]specifier -\n"); + printf("- -\n"); + printf("- conversions : cspdiuxX%% -\n"); + printf("- flags : -,0,.,* -\n"); + printf("- taille de champ minimale -\n"); + printf("- -\n"); + printf("- char *str = \"bravo\"; -\n"); + printf("- char c = 'c'; -\n"); + printf("- int i = 6; -\n"); + printf("-----------------------------------------------\n"); + printf("-----------------------------------------------\n"); + printf("- conversions : cspdiuxX%% -\n"); + printf("-----------------------------------------------\n\n"); + + // printf("(\"no newline\") ft : "); ft_printf("no newline"); printf("-->ligne suivante\n"); + printf("(\"no newline\") : "); printf("no newline"); printf("-->ligne suivante\n"); printf("\n"); + + // printf("(\"newline\\n\") ft : "); ft_printf("newline\n"); printf("-->ligne suivante\n"); + printf("(\"newline\\n\") : "); printf("newline\n"); printf("-->ligne suivante\n"); printf("\n"); + + // 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"); + + // printf("(\"%%c\",'c') ft : "); ft_printf("%c\n", 'c'); + printf("(\"%%c\",'c') : "); printf("%c\n", 'c'); printf("\n"); + + // printf("(\"%%s\",\"str\") ft : "); ft_printf("%s\n", "str"); + printf("(\"%%s\",\"str\") : "); printf("%s\n", "str"); printf("\n"); + + // printf("(\"%%s\",str) ft : "); ft_printf("%s\n", str); + printf("(\"%%s\",str) : "); printf("%s\n", str); printf("\n"); + + // printf("(\"%%p\",str) ft : "); ft_printf("%p\n", str); + printf("(\"%%p\",str) : "); printf("%p\n", str); printf("\n"); + + // printf("(\"%%d\",456) ft : "); ft_printf("%d\n", 456); + printf("(\"%%d\",456) : "); printf("%d\n", 456); printf("\n"); + + // printf("(\"%%i\",846) ft : "); ft_printf("%i\n", 846); + printf("(\"%%i\",846) : "); printf("%i\n", 846); printf("\n"); + + // printf("(\"%%u\",87) ft : "); ft_printf("%u\n", 87); + printf("(\"%%u\",87) : "); printf("%u\n", 87); printf("\n"); + + // printf("(\"%%u\",-87) ft : "); ft_printf("%u\n", -87); + printf("(\"%%u\",-87) : "); printf("%u\n", -87); printf("\n"); + + // printf("(\"%%x\",124) ft : "); ft_printf("%x\n", 124); + printf("(\"%%x\",124) : "); printf("%x\n", 124); printf("\n"); + + // printf("(\"%%X\",124) ft : "); ft_printf("%X\n", 124); + printf("(\"%%X\",124) : "); printf("%X\n", 124); printf("\n"); + + // printf("(\"%%X\",123456) ft : "); ft_printf("%X\n", 123456); + printf("(\"%%X\",123456) : "); printf("%X\n", 123456); printf("\n"); + + // printf("(\"%%X\",0x1E240) ft : "); ft_printf("%X\n", 0x1E240); + printf("(\"%%X\",0x1E240) : "); printf("%X\n", 0x1E240); printf("\n"); + + // printf("(\"%%i\",0x1E240) ft : "); ft_printf("%i\n", 0x1E240); + printf("(\"%%i\",0x1E240) : "); printf("%i\n", 0x1E240); printf("\n"); + + printf("-----------------------------------------------\n"); + printf("- flags : -0.* -\n"); + printf("- taille de champ minimale -\n"); + printf("-----------------------------------------------\n\n"); + + printf("- taille de champ minimale --------------------\n\n"); + + // printf("(\"%%3s\",\"a\") ft : "); ft_printf("'%3s'\n", "a"); + printf("(\"%%3s\",\"a\") : "); printf("'%3s'\n", "a"); printf("\n"); + + // printf("(\"%%3s\",\"abcd\") ft : "); ft_printf("'%3s'\n", "abcd"); + printf("(\"%%3s\",\"abcd\") : "); printf("'%3s'\n", "abcd"); printf("\n"); + + // printf("(\"%%3i\",12) ft : "); ft_printf("'%3i'\n", 12); + printf("(\"%%3i\",12) : "); printf("'%3i'\n", 12); printf("\n"); + + // printf("(\"%%2i\",12) ft : "); ft_printf("'%2i'\n", 12); + printf("(\"%%2i\",12) : "); printf("'%2i'\n", 12); printf("\n"); + + // printf("(\"%%1i\",12) ft : "); ft_printf("'%1i'\n", 12); + printf("(\"%%1i\",12) : "); printf("'%1i'\n", 12); printf("\n"); + + // printf("(\"%%0i\",0) ft : "); ft_printf("'%0i'\n", 0); + printf("(\"%%0i\",0) : "); printf("'%0i'\n", 0); printf("\n"); + + // printf("(\"%%6i\",-456) ft : "); ft_printf("'%6i'\n", -456); + printf("(\"%%6i\",-456) : "); printf("'%6i'\n", -456); printf("\n"); + + // printf("(\"%%6%%\") ft : "); ft_printf("'%6%'\n"); + printf("(\"%%6%%\") : "); printf("'%6%'\n"); printf("\n"); + + printf("- flag - --------------------------------------\n\n"); + + // printf("(\"%%-3s\",\"a\") ft : "); ft_printf("'%-3s'\n", "a"); + printf("(\"%%-3s\",\"a\") : "); printf("'%-3s'\n", "a"); printf("\n"); + + // printf("(\"%%-9s\",\"a\") ft : "); ft_printf("'%-9s'\n", "a"); + printf("(\"%%-9s\",\"a\") : "); printf("'%-9s'\n", "a"); printf("\n"); + + // printf("(\"%%-1s\",\"ab\") ft : "); ft_printf("'%-1s'\n", "ab"); + printf("(\"%%-1s\",\"ab\") : "); printf("'%-1s'\n", "ab"); printf("\n"); + + // printf("(\"%%-2s\",\"ab\") ft : "); ft_printf("'%-2s'\n", "ab"); + printf("(\"%%-2s\",\"ab\") : "); printf("'%-2s'\n", "ab"); printf("\n"); + + // printf("(\"%%-3s\",\"ab\") ft : "); ft_printf("'%-3s'\n", "ab"); + printf("(\"%%-3s\",\"ab\") : "); printf("'%-3s'\n", "ab"); printf("\n"); + + // printf("(\"%%-3i\",3) ft : "); ft_printf("'%-3i'\n", 3); + printf("(\"%%-3i\",3) : "); printf("'%-3i'\n", 3); printf("\n"); + + // printf("(\"%%-3i\",123456) ft : "); ft_printf("'%-3i'\n", 123456); + printf("(\"%%-3i\",123456) : "); printf("'%-3i'\n", 123456); printf("\n"); + + printf("- flag 0 (diouxX%%)------------------------------\n"); + printf("- \n"); + + // printf("(\"%%03i\",1) ft : "); ft_printf("'%03i'\n", 1); + printf("(\"%%03i\",1) : "); printf("'%03i'\n", 1); printf("\n"); + + // printf("(\"%%03u\",1) ft : "); ft_printf("'%03u'\n", 1); + printf("(\"%%03u\",1) : "); printf("'%03u'\n", 1); printf("\n"); + + // printf("(\"%%03x\",1) ft : "); ft_printf("'%03x'\n", 1); + printf("(\"%%03x\",1) : "); printf("'%03x'\n", 1); printf("\n"); + + // printf("(\"%%03%%\") ft : "); ft_printf("'%03%'\n"); + printf("(\"%%03%%\") : "); printf("'%03%'\n"); printf("\n"); + + // printf("(\"%%0%%\") ft : "); ft_printf("'%0%'\n"); + printf("(\"%%0%%\") : "); printf("'%0%'\n"); printf("\n"); + + printf("- flag . (diouxXs) ----------------------------------------------------------\n"); + printf("- if the . is not followed by a number, the value is 0\n"); + printf("- with arg value of 0, precision of 0 print nothing\n"); + printf("- with numbers (diouxX), gives the minimum number of digit to appear\n"); + printf("- if precision > nbr, it's preceded by '0'\n"); + printf("- if nbr < 0, '-' is not counted in precision\n"); + printf("- (length with '-' is (length(nbr or precision) + 1)'\n"); + printf("- if 0 flag is given (for width or precision) it's ignored\n"); + printf("- with strings (s), gives the maximum number of characters to be print\n"); + printf("- if precision > length(s), it's not preceded by '0'\n"); + printf("- precision is calculated before width\n"); + printf("\n"); + + // printf("(\"%%.5s\",\"12\") ft : "); ft_printf("'%.5s'\n", "12"); + printf("(\"%%.5s\",\"12\") : "); printf("'%.5s'\n", "12"); printf("\n"); + + // printf("(\"%%.5s\",\"12345678\") ft : "); ft_printf("'%.5s'\n", "12345678"); + printf("(\"%%.5s\",\"12345678\") : "); printf("'%.5s'\n", "12345678"); printf("\n"); + + // printf("(\"%%12.5s\",\"12345678\") ft : "); ft_printf("'%12.5s'\n", "12345678"); + printf("(\"%%12.5s\",\"12345678\") : "); printf("'%12.5s'\n", "12345678"); printf("\n"); + + // printf("(\"%%.5i\",12) ft : "); ft_printf("'%.5i'\n", 12); + printf("(\"%%.5i\",12) : "); printf("'%.5i'\n", 12); printf("\n"); + + // printf("(\"%%.7X\",8645) ft : "); ft_printf("'%.7X'\n", 8645); + printf("(\"%%.7X\",8645) : "); printf("'%.7X'\n", 8645); printf("\n"); + + // printf("(\"%%7.7X\",8645) ft : "); ft_printf("'%7.7X'\n", 8645); + printf("(\"%%7.7X\",8645) : "); printf("'%7.7X'\n", 8645); printf("\n"); + + // printf("(\"%%9.7X\",8645) ft : "); ft_printf("'%9.7X'\n", 8645); + printf("(\"%%9.7X\",8645) : "); printf("'%9.7X'\n", 8645); printf("\n"); + + // printf("(\"%%-9.7X\",8645) ft : "); ft_printf("'%-9.7X'\n", 8645); + printf("(\"%%-9.7X\",8645) : "); printf("'%-9.7X'\n", 8645); printf("\n"); + + // printf("(\"%%7.9X\",8645) ft : "); ft_printf("'%7.9X'\n", 8645); + printf("(\"%%7.9X\",8645) : "); printf("'%7.9X'\n", 8645); printf("\n"); + + // printf("(\"%%.0i\",0) ft : "); ft_printf("'%.0i'\n", 0); + printf("(\"%%.0i\",0) : "); printf("'%.0i'\n", 0); printf("\n"); + + // printf("(\"%%.0X\",0) ft : "); ft_printf("'%.0X'\n", 0); + printf("(\"%%.0X\",0) : "); printf("'%.0X'\n", 0); printf("\n"); + + // printf("(\"%%.i\",0) ft : "); ft_printf("'%.i'\n", 0); + printf("(\"%%.i\",0) : "); printf("'%.i'\n", 0); printf("\n"); + + // 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("(\"%%10.7X\",8645) ft : "); ft_printf("'%10.7X'\n", 8645); + printf("(\"%%10.7X\",8645) : "); printf("'%10.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("(\"%%-.7i\",8645) ft : "); ft_printf("'%-.7i'\n", 8645); + printf("(\"%%-.7i\",8645) : "); printf("'%-.7i'\n", 8645); printf("\n"); + + // printf("(\"%%.7i\",-8645) ft : "); ft_printf("'%.7i'\n", -8645); + printf("(\"%%.7i\",-8645) : "); printf("'%.7i'\n", -8645); printf("\n"); + + // printf("(\"%%.07i\",8645) ft : "); ft_printf("'%.07i'\n", 8645); + printf("(\"%%.07i\",8645) : "); printf("'%.07i'\n", 8645); printf("\n"); + + // printf("(\"%%.7%%\") ft : "); ft_printf("'%.7%'\n"); + printf("(\"%%.7%%\") : "); printf("'%.7%'\n"); printf("\n"); + + printf("- flag * --------------------------------------\n\n"); + + // printf("(\"%%*i\",3,1) ft : "); ft_printf("'%*i'\n", 3, 1); + printf("(\"%%*i\",3,1) : "); printf("'%*i'\n", 3, 1); printf("\n"); + + // printf("(\"%%-*i\",3,1) ft : "); ft_printf("'%-*i'\n", 3, 1); + printf("(\"%%-*i\",3,1) : "); printf("'%-*i'\n", 3, 1); printf("\n"); + + // printf("(\"%%*i-%%*i\",1,2,3,4) ft : "); ft_printf("'%*i-%*i'\n", 1, 2, 3, 4); + printf("(\"%%*i-%%*i\",1,2,3,4) : "); printf("'%*i-%*i'\n", 1, 2, 3, 4); printf("\n"); + + // printf("(\"%%*i-%%*i\",0,1,2,3) ft : "); ft_printf("'%*i-%*i'\n", 0, 1, 2, 3); + printf("(\"%%*i-%%*i\",0,1,2,3) : "); printf("'%*i-%*i'\n", 0, 1, 2, 3); printf("\n"); + + // printf("(\"%%.*i-%%.*i\",0,1,2,3) ft : "); ft_printf("'%.*i-%.*i'\n", 0, 1, 2, 3); + printf("(\"%%.*i-%%.*i\",0,1,2,3) : "); printf("'%.*i-%.*i'\n", 0, 1, 2, 3); printf("\n"); + + // printf("(\"%%3.2i\",1) ft : "); ft_printf("'%3.2i'\n", 1); + printf("(\"%%3.2i\",1) : "); printf("'%3.2i'\n", 1); printf("\n"); + + // printf("(\"%%*.*i\",3,2,1) ft : "); ft_printf("'%*.*i'\n", 3, 2, 1); + printf("(\"%%*.*i\",3,2,1) : "); printf("'%*.*i'\n", 3, 2, 1); printf("\n"); + + printf("-----------------------------------------------\n"); + printf("- TESTS REPETITIONS -\n"); + printf("- nbr of [#0-+ '] -\n"); + printf("-----------------------------------------------\n\n"); + + printf("(\"%%i'\", 33333) : "); printf("'%i'\n", 33333); printf("\n"); + + printf("(\"%%.0f\", 33333.0) : "); printf("'%.0f'\n", 33333.0); printf("\n"); + + printf("(\"%%#.0f\", 33333.0) : "); printf("'%#.0f'\n", 33333.0); printf("\n"); + + printf("(\"%%08i\", 33333) : "); printf("'%08i'\n", 33333); printf("\n"); + + printf("(\"%%-8i\", 33333) : "); printf("'%-8i'\n", 33333); printf("\n"); + + printf("(\"%%+i\", 33333) : "); printf("'%+i'\n", 33333); printf("\n"); + + printf("(\"%% i\", 33333) : "); printf("'% i'\n", 33333); printf("\n"); + + printf("(\"%%'i\", 33333) : "); printf("'%'i'\n", 33333); printf("\n"); + + printf("- repetition with ''' -------------------------\n"); + printf("- (repeatable additionable unordered) rau -----\n\n"); + + printf("(\"%%''''i\", 33333) : "); printf("'%''''i'\n", 33333); printf("\n"); + + printf("(\"%%'#.0f\", 33333.0) : "); printf("'%'#.0f'\n", 33333.0); printf("\n"); + + printf("(\"%%#'.0f\", 33333.0) : "); printf("'%#'.0f'\n", 33333.0); printf("\n"); + + printf("(\"%%'#'.0f\", 33333.0) : "); printf("'%'#'.0f'\n", 33333.0); printf("\n"); + + printf("(\"%%'08i\", 33333) : "); printf("'%'08i'\n", 33333); printf("\n"); + + printf("(\"%%0'8i\", 33333) : "); printf("'%0'8i'\n", 33333); printf("\n"); + + printf("(\"%%'0'8i\", 33333) : "); printf("'%'0'8i'\n", 33333); printf("\n"); + + printf("(\"%%'-8i\", 33333) : "); printf("'%'-8i'\n", 33333); printf("\n"); + + printf("(\"%%-'8i\", 33333) : "); printf("'%-'8i'\n", 33333); printf("\n"); + + printf("(\"%%'-'8i\", 33333) : "); printf("'%'-'8i'\n", 33333); printf("\n"); + + printf("(\"%%'+i\", 33333) : "); printf("'%'+i'\n", 33333); printf("\n"); + + printf("(\"%%+'i\", 33333) : "); printf("'%+'i'\n", 33333); printf("\n"); + + printf("(\"%%'+'i\", 33333) : "); printf("'%'+'i'\n", 33333); printf("\n"); + + printf("(\"%%' i\", 33333) : "); printf("'%' i'\n", 33333); printf("\n"); + + printf("(\"%% 'i\", 33333) : "); printf("'% 'i'\n", 33333); printf("\n"); + + printf("(\"%%' 'i\", 33333) : "); printf("'%' 'i'\n", 33333); printf("\n"); + + printf("- repetition with ' ' -------------------------\n"); + printf("- '+' and ' ' not compatible ------------------\n"); + printf("- rau -----------------------------------------\n\n"); + + printf("(\"%% i\", 33333) : "); printf("'% i'\n", 33333); printf("\n"); + + printf("(\"%% #.0f\", 33333.0) : "); printf("'% #.0f'\n", 33333.0); printf("\n"); + + printf("(\"%%# .0f\", 33333.0) : "); printf("'%# .0f'\n", 33333.0); printf("\n"); + + printf("(\"%% # .0f\", 33333.0) : "); printf("'% # .0f'\n", 33333.0); printf("\n"); + + printf("(\"%% 08i\", 33333) : "); printf("'% 08i'\n", 33333); printf("\n"); + + printf("(\"%%0 8i\", 33333) : "); printf("'%0 8i'\n", 33333); printf("\n"); + + printf("(\"%% 0 8i\", 33333) : "); printf("'% 0 8i'\n", 33333); printf("\n"); + + printf("(\"%% -8i\", 33333) : "); printf("'% -8i'\n", 33333); printf("\n"); + + printf("(\"%%- 8i\", 33333) : "); printf("'%- 8i'\n", 33333); printf("\n"); + + printf("(\"%% - 8i\", 33333) : "); printf("'% - 8i'\n", 33333); printf("\n"); + + printf("(\"%% 'i\", 33333) : "); printf("'% 'i'\n", 33333); printf("\n"); + + printf("(\"%%' i\", 33333) : "); printf("'%' i'\n", 33333); printf("\n"); + + printf("(\"%% ' i\", 33333) : "); printf("'% ' i'\n", 33333); printf("\n"); + + printf("- repetition with '-' -------------------------\n"); + printf("- '0' and '-' not compatible ------------------\n"); + printf("- rau -----------------------------------------\n\n"); + + printf("(\"%%----i\", 33333) : "); printf("'%----i'\n", 33333); printf("\n"); + + printf("(\"%%-#.0f\", 33333.0) : "); printf("'%-#.0f'\n", 33333.0); printf("\n"); + + printf("(\"%%#-.0f\", 33333.0) : "); printf("'%#-.0f'\n", 33333.0); printf("\n"); + + printf("(\"%%-#-.0f\", 33333.0) : "); printf("'%-#-.0f'\n", 33333.0); printf("\n"); + + printf("(\"%%-+8i\", 33333) : "); printf("'%-+8i'\n", 33333); printf("\n"); + + printf("(\"%%+-8i\", 33333) : "); printf("'%+-8i'\n", 33333); printf("\n"); + + printf("(\"%%-+-8i\", 33333) : "); printf("'%-+-8i'\n", 33333); printf("\n"); + + printf("(\"%%- i\", 33333) : "); printf("'%- i'\n", 33333); printf("\n"); + + printf("(\"%% -i\", 33333) : "); printf("'% -i'\n", 33333); printf("\n"); + + printf("(\"%%- -i\", 33333) : "); printf("'%- -i'\n", 33333); printf("\n"); + + printf("(\"%%-'i\", 33333) : "); printf("'%-'i'\n", 33333); printf("\n"); + + printf("(\"%%'-i\", 33333) : "); printf("'%'-i'\n", 33333); printf("\n"); + + printf("(\"%%-'-i\", 33333) : "); printf("'%-'-i'\n", 33333); printf("\n"); + + printf("- repetition with '+' -------------------------\n"); + printf("- '+' and ' ' not compatible ------------------\n"); + printf("- rau -----------------------------------------\n\n"); + + printf("(\"%%++++i\", 33333) : "); printf("'%++++i'\n", 33333); printf("\n"); + + printf("(\"%%+#.0f\", 33333.0) : "); printf("'%+#.0f'\n", 33333.0); printf("\n"); + + printf("(\"%%#+.0f\", 33333.0) : "); printf("'%#+.0f'\n", 33333.0); printf("\n"); + + printf("(\"%%+#+.0f\", 33333.0) : "); printf("'%+#+.0f'\n", 33333.0); printf("\n"); + + printf("(\"%%+08i\", 33333) : "); printf("'%+08i'\n", 33333); printf("\n"); + + printf("(\"%%0+8i\", 33333) : "); printf("'%0+8i'\n", 33333); printf("\n"); + + printf("(\"%%+0+8i\", 33333) : "); printf("'%+0+8i'\n", 33333); printf("\n"); + + printf("(\"%%+-8i\", 33333) : "); printf("'%+-8i'\n", 33333); printf("\n"); + + printf("(\"%%-+8i\", 33333) : "); printf("'%-+8i'\n", 33333); printf("\n"); + + printf("(\"%%+-+8i\", 33333) : "); printf("'%+-+8i'\n", 33333); printf("\n"); + + printf("(\"%%+'i\", 33333) : "); printf("'%+'i'\n", 33333); printf("\n"); + + printf("(\"%%'+i\", 33333) : "); printf("'%'+i'\n", 33333); printf("\n"); + + printf("(\"%%+'+i\", 33333) : "); printf("'%+'+i'\n", 33333); printf("\n"); + + printf("- repetition with '#' -------------------------\n"); + printf("- rau -----------------------------------------\n\n"); + + printf("(\"%%####f\", 33333.0) : "); printf("'%####f'\n", 33333.0); printf("\n"); + + printf("(\"%%#+.0f\", 33333.0) : "); printf("'%#+.0f'\n", 33333.0); printf("\n"); + + printf("(\"%%+#.0f\", 33333.0) : "); printf("'%+#.0f'\n", 33333.0); printf("\n"); + + printf("(\"%%#+#.0f\", 33333.0) : "); printf("'%#+#.0f'\n", 33333.0); printf("\n"); + + printf("(\"%%#08f\", 33333.0) : "); printf("'%#08f'\n", 33333.0); printf("\n"); + + printf("(\"%%0#8f\", 33333.0) : "); printf("'%0#8f'\n", 33333.0); printf("\n"); + + printf("(\"%%#0#8f\", 33333.0) : "); printf("'%#0#8f'\n", 33333.0); printf("\n"); + + printf("(\"%%#-8f\", 33333.0) : "); printf("'%#-8f'\n", 33333.0); printf("\n"); + + printf("(\"%%-#8f\", 33333.0) : "); printf("'%-#8f'\n", 33333.0); printf("\n"); + + printf("(\"%%#-#8f\", 33333.0) : "); printf("'%#-#8f'\n", 33333.0); printf("\n"); + + printf("(\"%%#'f\", 33333.0) : "); printf("'%#'f'\n", 33333.0); printf("\n"); + + printf("(\"%%'#f\", 33333.0) : "); printf("'%'#f'\n", 33333.0); printf("\n"); + + printf("(\"%%#'#f\", 33333.0) : "); printf("'%#'#f'\n", 33333.0); printf("\n"); + + printf("(\"%%# f\", 33333.0) : "); printf("'%# f'\n", 33333.0); printf("\n"); + + printf("(\"%% #f\", 33333.0) : "); printf("'% #f'\n", 33333.0); printf("\n"); + + printf("(\"%%# #f\", 33333.0) : "); printf("'%# #f'\n", 33333.0); printf("\n"); + + printf("- repetition with '0' -------------------------\n"); + printf("- '0' and '-' not compatible ------------------\n"); + printf("- rau -----------------------------------------\n\n"); + + printf("(\"%%0000i\", 33333) : "); printf("'%0000i'\n", 33333); printf("\n"); + + printf("(\"%%0#.0f\", 33333.0) : "); printf("'%0#.0f'\n", 33333.0); printf("\n"); + + printf("(\"%%#0.0f\", 33333.0) : "); printf("'%#0.0f'\n", 33333.0); printf("\n"); + + printf("(\"%%0#0.0f\", 33333.0) : "); printf("'%0#0.0f'\n", 33333.0); printf("\n"); + + printf("(\"%%0+8i\", 33333) : "); printf("'%0+8i'\n", 33333); printf("\n"); + + printf("(\"%%+08i\", 33333) : "); printf("'%+08i'\n", 33333); printf("\n"); + + printf("(\"%%0+08i\", 33333) : "); printf("'%0+08i'\n", 33333); printf("\n"); + + printf("(\"%%0 i\", 33333) : "); printf("'%0 i'\n", 33333); printf("\n"); + + printf("(\"%% 0i\", 33333) : "); printf("'% 0i'\n", 33333); printf("\n"); + + printf("(\"%%0 0i\", 33333) : "); printf("'%0 0i'\n", 33333); printf("\n"); + + printf("(\"%%0'i\", 33333) : "); printf("'%0'i'\n", 33333); printf("\n"); + + printf("(\"%%'0i\", 33333) : "); printf("'%'0i'\n", 33333); printf("\n"); + + printf("(\"%%0'0i\", 33333) : "); printf("'%0'0i'\n", 33333); printf("\n"); + + + // printf("-----------------------------------------------\n"); + // printf("- BONUS -\n"); + // printf("- conversions : nfge -\n"); + // printf("- flags : l,ll,h,hh,#,', ,+ -\n"); + // printf("-----------------------------------------------\n\n"); + + // printf("(\"%%#X\",8645) : "); + // printf("'%#X' \n", 8645); + // + // printf("(\"%%#.7X\",8645) : "); + // printf("'%#.7X' \n", 8645); + // + // printf("(\"%%#010.7X\",8645) : "); + // printf("'%#010.7X' \n", 8645); + // + // printf("(\"%%#10.7X\",8645) : "); + // printf("'%#10.7X' \n", 8645); + // + // printf("(\"%%#10X\",8645) : "); + // printf("'%#10X' \n", 8645); + // + // printf("(\"%%#.10X\",8645) : "); + // printf("'%#.10X' \n", 8645); + // + // printf("(\"%%#10.10X\",8645) : "); + // printf("'%#10.10X' \n", 8645); + // + // printf("(\"%%#010X\",8645) : "); + // printf("'%#010X' \n", 8645); + + // printf("-----------------------------------------------\n"); + // printf("- ADD -\n"); + // printf("- flags : $ -\n"); + // printf("-----------------------------------------------\n\n"); + + // printf("(\"%%1$*2$i\",3,2) ft : "); ft_printf("'%1$*2$i'\n", 3, 2); + // printf("(\"%%1$*2$i\",3,2) : "); printf("'%1$*2$i'\n", 3, 2); printf("\n"); + + // 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("(\"%%i\",3,2) ft : "); ft_printf("'%i'", 3, 2); + 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(" not enough arguments\n\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'", str); + printf("(\"%%010s\",str) : ");/* printf("'%010s'", str);*/ printf(" flag 0 has undefined behavior with s specifier\n\n"); + + // printf("(\"%%010c\",c) ft : "); ft_printf("'%010c'", c); + printf("(\"%%010c\",c) : ");/* printf("'%010c'", c);*/ printf(" flag 0 has undefined behavior with c specifier\n\n"); + + // printf("(\"%%03p\",str) ft : "); ft_printf("'%03p'\n", str); + printf("(\"%%03p\",str) : ");/* printf("'%03p'\n", str);*/ printf(" flag 0 has undefined behavior with p specifier\n\n"); + + // printf("(\"%%.-7X\",8645) ft : "); ft_printf("'%.-7X'", 8645); + printf("(\"%%.-7X\",8645) : ");/* printf("'%.-7X'", 8645);*/ printf(" invalid flag - for .precision\n\n"); + + // printf("(\"%%\",8645) ft : "); ft_printf("'%'", 8645); + printf("(\"%%\",8645) : ");/* printf("'%'", 8645);*/ printf(" missing conversion specifier\n\n"); + + // printf("(\"%%2$i-%%i\",3,2) ft : "); ft_printf("'%2$i-%i'\n", 3, 2); + printf("(\"%%2$i-%%i\",3,2) : ");/* printf("'%2$i-%i'", 3, 2);*/ printf(" cannot mix positioned and non-positioned args\n\n"); + + // printf("(\"%% +i\", 33 : "); ft_printf("'% +i'\n", 33); + printf("(\"%% +i\", 33 : ");/* printf("'% +i'\n", 33);*/ printf(" flag ' ' is ignored when '+' is present\n\n"); + + // printf("(\"%%-0i\", 33 : "); ft_printf("'%-+i'\n", 33); + printf("(\"%%-0i\", 33 : ");/* printf("'%-0i'\n", 33);*/ printf(" flag '0' is ignored when '-' is present\n\n"); + } + + /* ////////////////////////////////////////////////////////////////// */ + /* 557gk */ + /* ////////////////////////////////////////////////////////////////// */ return (0); } /* - int flag: pw+ '#-0 - 00000000 00000000 00000000 00000001 == 1 '0' - 00000000 00000000 00000000 00000010 == 2 '-' - 00000000 00000000 00000000 00000100 == 4 '#' - 00000000 00000000 00000000 00001000 == 8 ''' - 00000000 00000000 00000000 00010000 == 16 ' ' - 00000000 00000000 00000000 00100000 == 32 '+' - 00000000 00000000 00000000 01000000 == 64 '*' width - 00000000 00000000 00000000 10000000 == 128 '*' precision - - typedef struct s_prist - { - char *str; - int flag; // default 0 ; [0-#' +**] binary - int width; // default 0 ; - int prec; // default 0 ; precision - char *length; // default "\0" ; - char spec; // default 0 ; specifier - char *arg; // default "\0" ; - int p_nb; // default 0 ; print_nb : order in which to print (order it was found in string) - int a_nb; // default 0 ; arg_nb : number of the corresponding argument (for flag $) - struct s_prist *next; - } t_prist; - - ("2 1 3 4 3", 1, 2, 3, 4) - - ft_error(int err) - ft_store("%i truc %-10d machin\n") - ft_split_print(str) - prist->str = "%i"; - ft_fill_lst(prist) - prist->flag; // default = 0 - prist->width; // default = 0 - prist->prec; // default = 0 - prist->length; - prist->spec; - prist->p_nb; - prist->a_nb; // if not $ == p_nb - prist->str = " truc "; - ft_fill_lst(prist) - ... // if str start without % it means it can be printed as a string directly - prist->str = "%-10d"; - ft_fill_lst... - prist->str = " machin\n"; - ft_fill_lst... - return - {{str; flag; width; precision; length; specifier; p_nb 1; a_nb 2}, - {str; flag; width; precision; length; specifier; p_nb 2; a_nb 1}, - {str; flag; width; precision; length; specifier; p_nb 3; a_nb 3}, - {str; flag; width; precision; length; specifier; p_nb 4; a_nb 4}, - {str; flag; width; precision; length; specifier; p_nb 5; a_nb 3}} - - ft_sort_by_arg - {{str; flag; width; precision; length; specifier; p_nb 2; a_nb 1}, - {str; flag; width; precision; length; specifier; p_nb 1; a_nb 2}, - {str; flag; width; precision; length; specifier; p_nb 3; a_nb 3}, - {str; flag; width; precision; length; specifier; p_nb 5; a_nb 3}, - {str; flag; width; precision; length; specifier; p_nb 4; a_nb 4}} - - ft_add_arg - if lst->str[o] != '\%' rerun without looking for argument - if lst->flag == * rerun for next argument but same list element - [fl][w][p] or or - %i ,1 -> '1' [] [0][0] [ ][0][0] [] [0][0] - %*i ,3,1 -> ' 1' [*] [0][0] [* ][0][0] [w] [0][0] - %.*i ,2,1 -> '01' [*] [0][0] [ *][0][0] [p] [0][0] - %*.*i ,3,2,1 -> ' 01' [**][0][0] [**][0][0] [wp][0][0] - %3.*i ,2,1 -> ' 01' [*] [3][0] [ *][3][0] [p] [3][0] - %*.2i ,3,1 -> ' 01' [*] [0][2] [* ][0][2] [w] [0][2] - %3.2i ,1 -> ' 01' [] [3][2] [ ][3][2] [] [3][2] - if lst->next->a_nb == lst->a_nb rerun for next list element but same argument - {{str; flag; width; precision; length; specifier; arg; p_nb 2; a_nb 1}, - {str; flag; width; precision; length; specifier; arg; p_nb 1; a_nb 2}, - {str; flag; width; precision; length; specifier; arg; p_nb 3; a_nb 3}, - {str; flag; width; precision; length; specifier; arg; p_nb 5; a_nb 3}, - {str; flag; width; precision; length; specifier; arg; p_nb 4; a_nb 4}} - - conversions : cspdiuxX% - flags : -,0,.,* - conversions : nfge - flags : l,ll,h,hh,#,', ,+ - - usage : - printf %[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] - ft_printf % [flags 0,- ][width *][.precision *] [specifier d,i,u,x,X,c,s,p,% ] - bonus % [flags #,', ,+] [length hh,h,ll,l ][specifier e,f,g,n ] - - [arg_nbr] - ( nbr$ specify the argument to access, they are numbered starting at 1 - - [flags] #,0,-, ,+,' - - left-justify within the given field width - 0 left-pads the number with zeroes (0) instead of spaces, where - padding is specified (see width sub-specifier) - ( + forces to precede the result with a plus or minus sign even for - positive numbers) - ( (space) if no sign is going to be written, a blank space is inserted - before the value) - ( # (o, x, X, a, A, e, E, f, F, g, G) used with (o, x or X) the - value is preceded with 0, 0x or 0X for values different than - zero. used with (e, E or f), it forces the written output to - contain a decimal point even if no digits would follow. by - default, if no digits follow, no decimal point is written. used - with (g or G) the result is the same as with e or E but trailing - zeros are not removed - ( ' (d, u, i, f, F) used with d, u or i, or the integral portion of - a float f or F, the decimal conversions are printed by groups of - thousands separated by the non-monetary separator returned by - localeconv(3) (ex 123456789 -> 123,456,789) - - - [specifiers] d,i,u,x,X,c,s,p,%,e,f,g,n,E,F,G,a,A,C,S,o - c char character - s *char string of characters - p * pointer adress - d int (or i) signed decimal integer - i int (or d) signed decimal integer - u int unsigned decimal integer - x int unsigned hexadecimal integer - X int unsigned hexadecimal integer (capital letters) - ( n *int nothing printed - ( f float decimal floating point - ( e float scientific notation (mantissa/exponent) using e - ( g float uses the shorter of %e or %f - ((F float - ((E float scientific notation (mantissa/exponent) using E - ((G float uses the shorter of %E or %f - ((o int signed octal - ((C char treated as c with l modifier - ((a float - ((A float - ((S *char treated as s with l modifier - - [width] - (nbr) minimum number of characters to be printed. if the value to be - printed is shorter than this number, the result is padded with - blank spaces. The value is not truncated even if the result is - larger - * the width is not specified in the format string, but as an - additional integer value argument preceding the argument that - has to be formatted - - [.precision] - .nbr fot integer specifiers (d,i,o,x,X) - precision specifies the - minimum number of digits to be written. If the value to be - written is shorter than this number, the result is padded with - leading zeros. The value is not truncated even if the result is - longer. A precision of 0 means that no character is written for - the value 0. For e, E and f specifiers − this is the number of - digits to be printed after the decimal point. For g and G - specifiers − This is the maximum number of significant digits - to be printed. For s − this is the maximum number of characters - to be printed. By default all characters are printed until the - ending null character is encountered. For c type − it has no - effect. When no precision is specified, the default is 1. If the - period is specified without an explicit value for precision, 0 - is assumed - .* the precision is not specified in the format string, but as an - additional integer value argument preceding the argument that - has to be formated +** conversions : cspdiuxX% +** flags : - 0 . * +** conversions : nfge +** flags : l ll h hh # ' (space) + +** +** %[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 ] +** +** +** [flags] +** - left-justify within the given field width +** 0 left-pads the number with zeroes (0) instead of spaces, where +** padding is specified (see width sub-specifier) +** ( + forces to precede the result with a plus or minus sign even for +** positive numbers) +** ( (space) if no sign is going to be written, a blank space is inserted +** before the value) +** ( # (o, x, X, a, A, e, E, f, F, g, G) used with (o, x or X) the +** value is preceded with 0, 0x or 0X for values different than +** zero. used with (e, E or f), it forces the written output to +** contain a decimal point even if no digits would follow. by +** default, if no digits follow, no decimal point is written. used +** with (g or G) the result is the same as with e or E but trailing +** zeros are not removed +** ( ' (d, u, i, f, F) used with d, u or i, or the integral portion of +** a float f or F, the decimal conversions are printed by groups of +** thousands separated by the non-monetary separator returned by +** localeconv(3) (ex 123456789 -> 123,456,789) +** +** [width] +** (nbr) minimum number of characters to be printed. if the value to be +** printed is shorter than this number, the result is padded with +** blank spaces. The value is not truncated even if the result is +** larger +** * the width is not specified in the format string, but as an +** additional integer value argument preceding the argument that +** has to be formatted +** +** [.precision] +** .nbr fot integer specifiers (d,i,o,x,X) - precision specifies the +** minimum number of digits to be written. If the value to be +** written is shorter than this number, the result is padded with +** leading zeros. The value is not truncated even if the result is +** longer. A precision of 0 means that no character is written for +** the value 0. For e, E and f specifiers − this is the number of +** digits to be printed after the decimal point. For g and G +** specifiers − This is the maximum number of significant digits +** to be printed. For s − this is the maximum number of characters +** to be printed. By default all characters are printed until the +** ending null character is encountered. For c type − it has no +** effect. When no precision is specified, the default is 1. If the +** period is specified without an explicit value for precision, 0 +** is assumed +** .* the precision is not specified in the format string, but as an +** additional integer value argument preceding the argument that +** has to be formated +** +** [specifiers] +** c char character +** s *char string of characters +** p * pointer adress +** d int (or i) signed decimal integer +** i int (or d) signed decimal integer +** u u int unsigned decimal integer +** x u int unsigned hexadecimal integer +** X u int unsigned hexadecimal integer (capital letters) +** ( n *int nothing printed +** ( f float decimal floating point +** ( e float scientific notation (mantissa/exponent) using e +** ( g float uses the shorter of %e or %f +** ((F float +** ((E float scientific notation (mantissa/exponent) using E +** ((G float uses the shorter of %E or %f +** ((o int signed octal +** ((C char treated as c with l modifier +** ((a float +** ((A float +** ((S *char treated as s with l modifier +** +** +** p == long unsigned int +** +** char 1bytes 8bits +** short 2bytes 16bits +** int 4bytes 32bits +** long 8bytes 64bits +** long long 8bytes 64bits +** +** 255 -127 - +127 00 [char] [hhd, hhi, c] [int] [d( , h, hh), i( , h, hh), c] +** 65535 -32768 - +32767 01 [short] [hd, hi] [int] +** 4294967295 -2147483648 - +2147483647 02 [int] [d, i] [int] +** 18446744073709551615 -9223372036854775808 - +9223372036854775807 04 [long] [ld, li] [long] [d(l ,ll), i(l, ll)] +** 18446744073709551615 -9223372036854775808 - +9223372036854775807 04 [long long] [lld, lli] [long] +** 256 0 - +255 05 [unsigned char] [hhu, hhx, hhX] [unsigned int] [u( , h, hh), x( , h, hh), X( , h, hh), p] +** 65536 0 - +65536 06 [unsigned short] [hu, hx, hX] [unsigned int] +** 4294967296 0 - +4294967296 07 [unsigned int] [u, x, X, p] [unsigned int] +** 18446744073709551616 0 - +18446744073709551616 09 [unsigned long] [lu, lx, lX] [unsigned long] [s, u(l, ll), x(l, ll), X(l, ll)] +** 18446744073709551616 0 - +18446744073709551616 09 [unsigned long long] [llu, llx, llX] [unsigned long] +** 18446744073709551616 0 - +18446744073709551616 10 [char *] [s, hhn] [unsigned long] +** +** 18446744073709551616 0 - +18446744073709551616 16 [double] [e, le, f, lf, g, lg] [] +** 18446744073709551616 0 - +18446744073709551616 17 [wint_t] [lc] [] +** 18446744073709551616 0 - +18446744073709551616 18 [wchar_t] [ls] [] +** 18446744073709551616 0 - +18446744073709551616 11 [short *] [hn] [] +** 18446744073709551616 0 - +18446744073709551616 12 [int *] [n] [] +** 18446744073709551616 0 - +18446744073709551616 13 [long *] [ln] [] +** 18446744073709551616 0 - +18446744073709551616 14 [long long *] [lln] [] +** +** d int 0 int +** dhh char 1 char +** dh short 2 short +** dl long 3 long +** dll long long 4 long long +** +** i int +** ihh char +** ih short +** il long +** ill long long +** +** u unsigned int 5 unsigned int +** uhh unsigned char 6 unsigned char +** uh unsigned short 7 unsigned short +** ul unsigned long 8 unsigned long +** ull unsigned long long 9 unsigned long long +** +** x unsigned int +** xhh unsigned char +** xh unsigned short +** xl unsigned long +** xll unsigned long long +** +** X unsigned int +** Xhh unsigned char +** Xh unsigned short +** Xl unsigned long +** Xll unsigned long long +** +** c char -> int +** cl wint_t 10 wint_t +** s char * 11 char * +** sl wchar_t * 12 wchar_t * +** p unsigned int +** e double 13 double +** el +** f double +** fl +** g double +** gl +** +** n int * 14 int * +** nhh char * +** nh short * 15 short * +** nl long * 16 long * +** nll long long * 17 long long * +** +** printf("char %lu\n", sizeof(char)); +** printf("short %lu\n", sizeof(short)); +** printf("int %lu\n", sizeof(int)); +** printf("long %lu\n", sizeof(long)); +** printf("long long %lu\n", sizeof(long long)); +** printf("unsigned char %lu\n", sizeof(unsigned char)); +** printf("unsigned short %lu\n", sizeof(unsigned short)); +** printf("unsigned int %lu\n", sizeof(unsigned int)); +** printf("unsigned long %lu\n", sizeof(unsigned long)); +** printf("unsigned long long %lu\n", sizeof(unsigned long long)); +** printf("char * %lu\n", sizeof(char *)); +** printf("short * %lu\n", sizeof(short *)); +** printf("int * %lu\n", sizeof(int *)); +** printf("long * %lu\n", sizeof(long *)); +** printf("long long * %lu\n", sizeof(long long *)); +** printf("double %lu\n", sizeof(double)); +** // printf("wint_t %lu\n", sizeof(wint_t)); +** // printf("wchar_T %lu\n", sizeof(wchar_t)); +** +** int flag: pw+ '#-0 +** 00000000 00000000 00000000 00000001 == 1 '0' +** 00000000 00000000 00000000 00000010 == 2 '-' +** 00000000 00000000 00000000 00000100 == 4 '#' +** 00000000 00000000 00000000 00001000 == 8 ''' +** 00000000 00000000 00000000 00010000 == 16 ' ' +** 00000000 00000000 00000000 00100000 == 32 '+' +** 00000000 00000000 00000000 01000000 == 64 '*' width +** 00000000 00000000 00000000 10000000 == 128 '*' precision +** +** typedef struct s_prist +** { +** char *str; +** int flag; // default 0 ; [0-#' +**] binary +** int width; // default 0 ; +** int prec; // default 0 ; precision +** char *length; // default "\0" ; +** char spec; // default 0 ; specifier +** char *arg; // default "\0" ; +** int p_nb; // default 0 ; print_nb : order in which to print (order it was found in string) +** int a_nb; // default 0 ; arg_nb : number of the corresponding argument (for flag $) +** struct s_prist *next; +** } t_prist; +** +** ("2 1 3 4 3", 1, 2, 3, 4) +** +** ft_error(int err) +** ft_store("%i truc %-10d machin\n") +** ft_split_print(str) +** prist->str = "%i"; +** ft_fill_lst(prist) +** prist->flag; // default = 0 +** prist->width; // default = 0 +** prist->prec; // default = 0 +** prist->length; +** prist->spec; +** prist->p_nb; +** prist->a_nb; // if not $ == p_nb +** prist->str = " truc "; +** ft_fill_lst(prist) +** ... // if str start without % it means it can be printed as a string directly +** prist->str = "%-10d"; +** ft_fill_lst... +** prist->str = " machin\n"; +** ft_fill_lst... +** return +** {{str; flag; width; precision; length; specifier; p_nb 1; a_nb 2}, +** {str; flag; width; precision; length; specifier; p_nb 2; a_nb 1}, +** {str; flag; width; precision; length; specifier; p_nb 3; a_nb 3}, +** {str; flag; width; precision; length; specifier; p_nb 4; a_nb 4}, +** {str; flag; width; precision; length; specifier; p_nb 5; a_nb 3}} +** +** ft_sort_by_arg +** {{str; flag; width; precision; length; specifier; p_nb 2; a_nb 1}, +** {str; flag; width; precision; length; specifier; p_nb 1; a_nb 2}, +** {str; flag; width; precision; length; specifier; p_nb 3; a_nb 3}, +** {str; flag; width; precision; length; specifier; p_nb 5; a_nb 3}, +** {str; flag; width; precision; length; specifier; p_nb 4; a_nb 4}} +** +** ft_add_arg +** if lst->str[o] != '\%' rerun without looking for argument +** if lst->flag == * rerun for next argument but same list element +** [fl][w][p] or or +** %i ,1 -> '1' [] [0][0] [ ][0][0] [] [0][0] +** %*i ,3,1 -> ' 1' [*] [0][0] [* ][0][0] [w] [0][0] +** %.*i ,2,1 -> '01' [*] [0][0] [ *][0][0] [p] [0][0] +** %*.*i ,3,2,1 -> ' 01' [**][0][0] [**][0][0] [wp][0][0] +** %3.*i ,2,1 -> ' 01' [*] [3][0] [ *][3][0] [p] [3][0] +** %*.2i ,3,1 -> ' 01' [*] [0][2] [* ][0][2] [w] [0][2] +** %3.2i ,1 -> ' 01' [] [3][2] [ ][3][2] [] [3][2] +** if lst->next->a_nb == lst->a_nb rerun for next list element but same argument +** {{str; flag; width; precision; length; specifier; arg; p_nb 2; a_nb 1}, +** {str; flag; width; precision; length; specifier; arg; p_nb 1; a_nb 2}, +** {str; flag; width; precision; length; specifier; arg; p_nb 3; a_nb 3}, +** {str; flag; width; precision; length; specifier; arg; p_nb 5; a_nb 3}, +** {str; flag; width; precision; length; specifier; arg; p_nb 4; a_nb 4}} */ diff --git a/aside.c b/srcs/aside.c similarity index 95% rename from aside.c rename to srcs/aside.c index 3d2ba19..4869d72 100644 --- a/aside.c +++ b/srcs/aside.c @@ -6,7 +6,7 @@ /* By: hulamy +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/02/19 16:23:01 by hulamy #+# #+# */ -/* Updated: 2020/02/19 18:44:21 by hulamy ### ########.fr */ +/* Updated: 2020/02/20 13:03:34 by hulamy ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,7 +15,7 @@ /* ** SPECIFIER : ** receive a word as a string, check if it start by '%', and return the -** specifier (diuxXspefgn) and th length (h hh l ll) +** specifier (diuxXspefgn) and the length (h hh l ll) ** -if s is a string, or is a single '%' ** return NULL (to print is as a string) ** -if s is a double '%%', remove one '%', and diff --git a/ft_convert.c b/srcs/ft_convert.c similarity index 100% rename from ft_convert.c rename to srcs/ft_convert.c diff --git a/ft_next_word.c b/srcs/ft_next_word.c similarity index 100% rename from ft_next_word.c rename to srcs/ft_next_word.c