diff --git a/ft_printf b/ft_printf index 7642616..ae2305c 100755 Binary files a/ft_printf and b/ft_printf differ diff --git a/main.c b/main.c index 01beaa9..bba7614 100644 --- a/main.c +++ b/main.c @@ -35,7 +35,11 @@ fflush(stdout); \ printf("%s", ft_compare(outf, outft, &error)); \ fflush(stdout); \ - ft_printf("%38s" string "'\n\n", ": '", ##args); \ + printf("%38s", ": '"); \ + fflush(stdout); \ + ft_printf(string, ##args); \ + fflush(stdout); \ + printf("'\n\n"); \ fflush(stdout); \ \ close(outf); \ @@ -130,6 +134,8 @@ int ft_printf_test(char *string, ...) int main(int ac, char **av) { + setlocale(LC_ALL, "en_US.UTF-8"); + int outf; int outft; open("outf.txt", O_CREAT, 0644); @@ -137,6 +143,7 @@ int main(int ac, char **av) static int error = 0; int save = dup(1); + /* ////////////////////////////////////////////////////////////////// */ /* PREMISES TESTS WITH AV_ARG BASED ON MAN EXEMPLE */ /* ////////////////////////////////////////////////////////////////// */ @@ -144,12 +151,41 @@ int main(int ac, char **av) if (ac == 1) { printf("USAGE:\n"); - printf("call ./ft_printf with arguments to launch tests\n"); - printf("./ft_printf man [launch the tests found in the man page]\n"); - printf("./ft_printf test [launch the tests used to debug]\n"); - printf("./ft_printf all [launch the exhaustive tests]\n"); - printf("./ft_printf all basic [launch the basic part of exhaustive tests]\n"); - printf("./ft_printf all basic [launch the basic part of exhaustive tests]\n"); + printf("call ./ft_printf with arguments to launch tests :\n"); + printf("./ft_printf 'man' \n"); + printf(" 'test' \n"); + printf(" 'all' \n"); + printf(" 'noflag' \n"); + printf(" '0' \n"); + printf(" '-' \n"); + printf(" 'width' \n"); + printf(" 'precision' \n"); + printf(" '*' \n"); + printf(" 'd' \n"); + printf(" 'i' \n"); + printf(" 'u' \n"); + printf(" 'x' \n"); + printf(" 'X' \n"); + printf(" 'c' \n"); + printf(" 's' \n"); + printf(" 'p' \n"); + printf(" '%%' \n"); + printf(" 'repetition'\n"); + printf(" 'bonus' \n"); + printf(" '#' \n"); + printf(" ''' \n"); + printf(" ' ' \n"); + printf(" '+' \n"); + printf(" 'e' \n"); + printf(" 'f' \n"); + printf(" 'g' \n"); + printf(" 'n' \n"); + printf(" 'h' \n"); + printf(" 'hh' \n"); + printf(" 'l' \n"); + printf(" 'll' \n"); + printf(" 'repetition'\n"); + printf(" 'error' \n"); } if (ac == 2 && !strcmp(av[1], "man")) @@ -190,69 +226,62 @@ int main(int ac, char **av) if (ac == 2 && !strcmp(av[1], "test")) { - PRINT("s\ndf"); - PRINT("%i", 23); - long int k = -23; - PRINT("%li", k); - PRINT("%i", -32); - PRINT("%li", 9223372036854775807); - PRINT("%c", 'f'); - PRINT("%s", "sdffhk"); - PRINT("%u", 1221879); - PRINT("%x", 3287); - PRINT("%lX", 9223372036854775807); - PRINT("%p", "dfgdf"); - PRINT("%.i", 121); - PRINT("%.2i", 122); - PRINT("%.25i", 123); - PRINT("%0.6i", 124); - // PRINT("%-032.6i", 125); - // PRINT("%0-032.6i", 126); - // PRINT("%0-0.6i", 127); - PRINT("%s", "string"); - PRINT("%.7s", "strong"); - PRINT("%.2s", "strung"); - PRINT("%.0s", "strang"); - PRINT("%.s", "streng"); - PRINT("%.7i", -123456); - PRINT("%2i", -128); - PRINT("%0i", -129); - PRINT("%10i", -130); - PRINT("%*i", 0,-131); - // PRINT("%0s", "stryng"); - PRINT("%10s", "strxng"); - // PRINT("%010s", "strzng"); - // PRINT("%010s" "__TEST__", "strzng"); +// PRINT("sdf"); +// PRINT("%i", 23); +// long int k = -23; +// PRINT("%li", k); +// PRINT("%i", -32); +// PRINT("%li", 9223372036854775807); +// PRINT("%c", 'f'); +// PRINT("%s", "sdffhk"); +// PRINT("%u", 1221879); +// PRINT("%x", 3287); +// PRINT("%lX", 9223372036854775807); +// PRINT("%p", "dfgdf"); +// PRINT("%.i", 121); +// PRINT("%.2i", 122); +// PRINT("%.25i", 123); +// PRINT("%0.6i", 124); +// // PRINT("%-032.6i", 125); +// // PRINT("%0-032.6i", 126); +// // PRINT("%0-0.6i", 127); +// PRINT("%s", "string"); +// PRINT("%.7s", "strong"); +// PRINT("%.2s", "strung"); +// PRINT("%.0s", "strang"); +// PRINT("%.s", "streng"); +// PRINT("%.7i", -123456); +// PRINT("%2i", -128); +// PRINT("%0i", -129); +// PRINT("%10i", -130); +// PRINT("%*i", 0,-131); +// // PRINT("%0s", "stryng"); +// PRINT("%10s", "strxng"); +// // PRINT("%010s", "strzng"); +// // PRINT("%010s" "__TEST__", "strzng"); + PRINT("%%"); + PRINT("%.10%"); + PRINT("%10%"); + PRINT("%-10%"); + PRINT("%010%"); + PRINT("%-010%"); } /* ////////////////////////////////////////////////////////////////// */ /* COMPLETE TESTS SERIES */ - /* 295gj */ /* ////////////////////////////////////////////////////////////////// */ - if (ac == 2 && !strcmp(av[1], "all")) + if (ac >= 2 && ac <= 3 && !strcmp(av[1], "all")) { - char *str; - char c; - int i; - - setlocale(LC_ALL, "en_US.UTF-8"); - c = 'c'; - i = 6; - - printf("-----------------------------------------------\n"); - printf("BASICS\n\n"); - printf("%%[flag][width][.precision][length]specifier\n"); - printf("conversions : cspdiuxX%%\n"); - printf(" flags : -,0,.,*\n"); - printf("taille de champ minimale\n"); - printf("-----------------------------------------------\n"); - printf("-----------------------------------------------\n"); - printf("- conversions : cspdiuxX%% -\n"); - printf("-----------------------------------------------\n\n"); - - PRINT("%%\n"); + if (ac == 2 || !strcmp(av[2], "noflag")) + { + printf("\n----------------------------------------------------------------\n"); + printf("conversions sans flags : cspdiuxX%%\n"); + printf("----------------------------------------------------------------\n\n"); + + char *str = "bravo"; + PRINT("%%"); PRINT("%.10%"); PRINT("%10%"); PRINT("%-10%"); @@ -261,7 +290,6 @@ int main(int ac, char **av) PRINT("\""); PRINT("%c", 'c'); PRINT("%s", "str"); - str = "bravo"; PRINT("%s", str); PRINT("%p", "bravo"); PRINT("%p", str); @@ -274,14 +302,42 @@ int main(int ac, char **av) PRINT("%X", 123456); PRINT("%X", 0x1E240); PRINT("%i", 0x1E240); - - printf("-----------------------------------------------\n"); - printf("- flags : -0.* -\n"); - printf("- taille de champ minimale -\n"); - printf("-----------------------------------------------\n\n"); - - printf("- taille de champ minimale --------------------\n\n"); - + } + + if (ac == 2 || !strcmp(av[2], "0")) + { + printf("----------------------------------------------------------------\n"); + printf("flag '0' (diouxX%%)\n"); + printf("----------------------------------------------------------------\n\n"); + + PRINT("%03i", 1); + PRINT("%03u", 1); + PRINT("%03x", 1); + PRINT("%03%"); + PRINT("%0%"); + } + + if (ac == 2 || !strcmp(av[2], "-")) + { + printf("\n----------------------------------------------------------------\n"); + printf("flag '-'\n"); + printf("----------------------------------------------------------------\n\n"); + + PRINT("%-3s", "a"); + PRINT("%-9s", "a"); + PRINT("%-1s", "ab"); + PRINT("%-2s", "ab"); + PRINT("%-3s", "ab"); + PRINT("%-3i", 3); + PRINT("%-3i", 123456); + } + + if (ac == 2 || !strcmp(av[2], "width")) + { + printf("\n----------------------------------------------------------------\n"); + printf("taille de champ minimale\n"); + printf("----------------------------------------------------------------\n\n"); + PRINT("%3s", "a"); PRINT("%3s", "abcd"); PRINT("%3i", 12); @@ -290,36 +346,25 @@ int main(int ac, char **av) PRINT("%0i", 0); PRINT("%6i", -456); PRINT("%6%"); - - printf("- flag - --------------------------------------\n\n"); - - PRINT("%-3s", "a"); - PRINT("%-9s", "a"); - PRINT("%-1s", "ab"); - PRINT("%-2s", "ab"); - PRINT("%-3s", "ab"); - PRINT("%-3i", 3); - PRINT("%-3i", 123456); - - printf("- flag 0 (diouxX%%)------------------------------\n"); - - PRINT("%03i", 1); - PRINT("%03u", 1); - PRINT("%03x", 1); - PRINT("%03%"); - PRINT("%0%"); - - 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\n"); + } + + if (ac == 2 || !strcmp(av[2], "precision")) + { + printf("\n----------------------------------------------------------------\n"); + printf("flag '.precision' (diouxXs)\n"); + printf("----------------------------------------------------------------\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\n"); PRINT("%.5s", "12"); PRINT("%.5s", "12345678"); @@ -341,9 +386,14 @@ int main(int ac, char **av) PRINT("%.7i", -8645); PRINT("%.07i", 8645); PRINT("%.7%"); - - printf("- flag * --------------------------------------\n\n"); - + } + + if (ac == 2 || !strcmp(av[2], "*")) + { + printf("\n----------------------------------------------------------------\n"); + printf("flag '*' with .precision or width\n"); + printf("----------------------------------------------------------------\n\n"); + PRINT("%*i", 3, 1); PRINT("%-*i", 3, 1); PRINT("%*i-%*i", 1, 2, 3, 4); @@ -351,63 +401,102 @@ int main(int ac, char **av) PRINT("%.*i-%.*i", 0, 1, 2, 3); PRINT("%3.2i", 1); PRINT("%*.*i", 3, 2, 1); - - printf("-----------------------------------------------\n"); - printf("- TESTS REPETITIONS -\n"); - printf("- nbr of [#0-+ '] -\n"); - printf("-----------------------------------------------\n\n"); - + } + + if (ac == 2 || !strcmp(av[2], "d")) + { + printf("\n----------------------------------------------------------------\n"); + printf("specifier 'd'\n"); + printf("----------------------------------------------------------------\n\n"); + } + + if (ac == 2 || !strcmp(av[2], "i")) + { + printf("\n----------------------------------------------------------------\n"); + printf("specifier 'i'\n"); + printf("----------------------------------------------------------------\n\n"); + } + + if (ac == 2 || !strcmp(av[2], "u")) + { + printf("\n----------------------------------------------------------------\n"); + printf("specifier 'u'\n"); + printf("----------------------------------------------------------------\n\n"); + } + + if (ac == 2 || !strcmp(av[2], "x")) + { + printf("\n----------------------------------------------------------------\n"); + printf("specifier 'x'\n"); + printf("----------------------------------------------------------------\n\n"); + } + + if (ac == 2 || !strcmp(av[2], "X")) + { + printf("\n----------------------------------------------------------------\n"); + printf("specifier 'X'\n"); + printf("----------------------------------------------------------------\n\n"); + } + + if (ac == 2 || !strcmp(av[2], "c")) + { + printf("\n----------------------------------------------------------------\n"); + printf("specifier 'c'\n"); + printf("----------------------------------------------------------------\n\n"); + } + + if (ac == 2 || !strcmp(av[2], "s")) + { + printf("\n----------------------------------------------------------------\n"); + printf("specifier 's'\n"); + printf("----------------------------------------------------------------\n\n"); + } + + if (ac == 2 || !strcmp(av[2], "p")) + { + printf("\n----------------------------------------------------------------\n"); + printf("specifier 'p'\n"); + printf("----------------------------------------------------------------\n\n"); + } + + if (ac == 2 || !strcmp(av[2], "%")) + { + printf("\n----------------------------------------------------------------\n"); + printf("specifier '%%'\n"); + printf("----------------------------------------------------------------\n\n"); + } + + if (ac == 2 || !strcmp(av[2], "repetition")) + { + printf("\n----------------------------------------------------------------\n"); + printf("tests repetitions of flags [0-]\n"); + printf("----------------------------------------------------------------\n\n"); + PRINT("%i", 33333); PRINT("%.0f", 33333.0); - PRINT("%#.0f", 33333.0); PRINT("%08i", 33333); PRINT("%-8i", 33333); - PRINT("%+i", 33333); - PRINT("% i", 33333); - PRINT("%'i", 33333); - - printf("- repetition with ''' -------------------------\n"); - printf("- (repeatable additionable unordered) rau -----\n\n"); - - PRINT("%''''i", 33333); - PRINT("%'#.0f", 33333.0); - PRINT("%#'.0f", 33333.0); - PRINT("%'#'.0f", 33333.0); - PRINT("%'08i", 33333); - PRINT("%0'8i", 33333); - PRINT("%'0'8i", 33333); - PRINT("%'-8i", 33333); - PRINT("%-'8i", 33333); - PRINT("%'-'8i", 33333); - PRINT("%'+i", 33333); - PRINT("%+'i", 33333); - PRINT("%'+'i", 33333); - PRINT("%' i", 33333); - PRINT("% 'i", 33333); - PRINT("%' 'i", 33333); - - printf("- repetition with ' ' -------------------------\n"); - printf("- '+' and ' ' not compatible ------------------\n"); - printf("- rau -----------------------------------------\n\n"); - - PRINT("% i", 33333); - PRINT("% #.0f", 33333.0); - PRINT("%# .0f", 33333.0); - PRINT("% # .0f", 33333.0); - PRINT("% 08i", 33333); - PRINT("%0 8i", 33333); - PRINT("% 0 8i", 33333); - PRINT("% -8i", 33333); - PRINT("%- 8i", 33333); - PRINT("% - 8i", 33333); - PRINT("% 'i", 33333); - PRINT("%' i", 33333); - PRINT("% ' i", 33333); - - printf("- repetition with '-' -------------------------\n"); - printf("- '0' and '-' not compatible ------------------\n"); - printf("- rau -----------------------------------------\n\n"); - + + printf("\nrepetition of flag '0' --------------------------------------------\n"); + printf("'0' and '-' not compatible ----------------------------------------\n\n"); + + PRINT("%0000i", 33333); + PRINT("%0#.0f", 33333.0); + PRINT("%#0.0f", 33333.0); + PRINT("%0#0.0f", 33333.0); + PRINT("%0+8i", 33333); + PRINT("%+08i", 33333); + PRINT("%0+08i", 33333); + PRINT("%0 i", 33333); + PRINT("% 0i", 33333); + PRINT("%0 0i", 33333); + PRINT("%0'i", 33333); + PRINT("%'0i", 33333); + PRINT("%0'0i", 33333); + + printf("\nrepetition of flag '-' --------------------------------------------\n"); + printf("'0' and '-' not compatible ----------------------------------------\n\n"); + PRINT("%----i", 33333); PRINT("%-#.0f", 33333.0); PRINT("%#-.0f", 33333.0); @@ -421,28 +510,128 @@ int main(int ac, char **av) PRINT("%-'i", 33333); PRINT("%'-i", 33333); PRINT("%-'-i", 33333); + } + } - printf("- repetition with '+' -------------------------\n"); - printf("- '+' and ' ' not compatible ------------------\n"); - printf("- rau -----------------------------------------\n\n"); - - PRINT("%++++i", 33333); - PRINT("%+#.0f", 33333.0); - PRINT("%#+.0f", 33333.0); - PRINT("%+#+.0f", 33333.0); - PRINT("%+08i", 33333); - PRINT("%0+8i", 33333); - PRINT("%+0+8i", 33333); - PRINT("%+-8i", 33333); - PRINT("%-+8i", 33333); - PRINT("%+-+8i", 33333); - PRINT("%+'i", 33333); - PRINT("%'+i", 33333); - PRINT("%+'+i", 33333); - - printf("- repetition with '#' -------------------------\n"); - printf("- rau -----------------------------------------\n\n"); + if (ac >= 2 && ac <= 3 && !strcmp(av[1], "bonus")) + { + printf("----------------------------------------------------------------\n"); + printf("%% flags width .precision length specifier \n"); + printf("%% 0-#' + * 0..9 .* 0..9 hhhlllLjtz diuxXcsp%%efgnEFGaACSo\n"); + printf("%% 0- * 0..9 .* 0..9 diuxXcsp%% \n"); + printf("%% #' + hhhlll efgn \n"); + printf("----------------------------------------------------------------\n\n"); + + if (ac == 2 || !strcmp(av[2], "#")) + { + printf("\n----------------------------------------------------------------\n"); + printf("flag '#'\n"); + printf("----------------------------------------------------------------\n\n"); + PRINT("%#X", 8645); + PRINT("%#.7X", 8645); + PRINT("%#010.7X", 8645); + PRINT("%#10.7X", 8645); + PRINT("%#10X", 8645); + PRINT("%#.10X", 8645); + PRINT("%#10.10X", 8645); + PRINT("%#010X", 8645); + } + + if (ac == 2 || !strcmp(av[2], "'")) + { + printf("\n----------------------------------------------------------------\n"); + printf("flag '''\n"); + printf("----------------------------------------------------------------\n\n"); + } + + if (ac == 2 || !strcmp(av[2], " ")) + { + printf("\n----------------------------------------------------------------\n"); + printf("flag ' '\n"); + printf("----------------------------------------------------------------\n\n"); + } + + if (ac == 2 || !strcmp(av[2], "+")) + { + printf("\n----------------------------------------------------------------\n"); + printf("flag '+'\n"); + printf("----------------------------------------------------------------\n\n"); + } + + if (ac == 2 || !strcmp(av[2], "e")) + { + printf("\n----------------------------------------------------------------\n"); + printf("specifier 'e'\n"); + printf("----------------------------------------------------------------\n\n"); + } + + if (ac == 2 || !strcmp(av[2], "f")) + { + printf("\n----------------------------------------------------------------\n"); + printf("specifier 'f'\n"); + printf("----------------------------------------------------------------\n\n"); + } + + if (ac == 2 || !strcmp(av[2], "g")) + { + printf("\n----------------------------------------------------------------\n"); + printf("specifier 'g'\n"); + printf("----------------------------------------------------------------\n\n"); + } + + if (ac == 2 || !strcmp(av[2], "n")) + { + printf("\n----------------------------------------------------------------\n"); + printf("specifier 'n'\n"); + printf("----------------------------------------------------------------\n\n"); + } + + if (ac == 2 || !strcmp(av[2], "h")) + { + printf("\n----------------------------------------------------------------\n"); + printf("length 'h'\n"); + printf("----------------------------------------------------------------\n\n"); + } + + if (ac == 2 || !strcmp(av[2], "hh")) + { + printf("\n----------------------------------------------------------------\n"); + printf("length 'hh'\n"); + printf("----------------------------------------------------------------\n\n"); + } + + if (ac == 2 || !strcmp(av[2], "l")) + { + printf("\n----------------------------------------------------------------\n"); + printf("length 'l'\n"); + printf("----------------------------------------------------------------\n\n"); + } + + if (ac == 2 || !strcmp(av[2], "ll")) + { + printf("\n----------------------------------------------------------------\n"); + printf("length 'll'\n"); + printf("----------------------------------------------------------------\n\n"); + } + + if (ac == 2 || !strcmp(av[2], "repetition")) + { + printf("\n----------------------------------------------------------------\n"); + printf("tests repetitions of flags [#' +]\n"); + printf("----------------------------------------------------------------\n\n"); + + PRINT("%i", 33333); + PRINT("%.0f", 33333.0); + PRINT("%#.0f", 33333.0); + PRINT("%08i", 33333); + PRINT("%-8i", 33333); + PRINT("%+i", 33333); + PRINT("% i", 33333); + PRINT("%'i", 33333); + + printf("\nrepetition of flag '#' --------------------------------------------\n"); + PRINT("%####f", 33333.0); PRINT("%#+.0f", 33333.0); PRINT("%+#.0f", 33333.0); @@ -459,69 +648,87 @@ int main(int ac, char **av) PRINT("%# f", 33333.0); PRINT("% #f", 33333.0); PRINT("%# #f", 33333.0); - - printf("- repetition with '0' -------------------------\n"); - printf("- '0' and '-' not compatible ------------------\n"); - printf("- rau -----------------------------------------\n\n"); - - PRINT("%0000i", 33333); - PRINT("%0#.0f", 33333.0); - PRINT("%#0.0f", 33333.0); - PRINT("%0#0.0f", 33333.0); - PRINT("%0+8i", 33333); + + printf("\nrepetition of flag ''' --------------------------------------------\n\n"); + + PRINT("%''''i", 33333); + PRINT("%'#.0f", 33333.0); + PRINT("%#'.0f", 33333.0); + PRINT("%'#'.0f", 33333.0); + PRINT("%'08i", 33333); + PRINT("%0'8i", 33333); + PRINT("%'0'8i", 33333); + PRINT("%'-8i", 33333); + PRINT("%-'8i", 33333); + PRINT("%'-'8i", 33333); + PRINT("%'+i", 33333); + PRINT("%+'i", 33333); + PRINT("%'+'i", 33333); + PRINT("%' i", 33333); + PRINT("% 'i", 33333); + PRINT("%' 'i", 33333); + + printf("\nrepetition of flag ' ' --------------------------------------------\n"); + printf("'+' and ' ' not compatible ----------------------------------------\n\n"); + + PRINT("% i", 33333); + PRINT("% #.0f", 33333.0); + PRINT("%# .0f", 33333.0); + PRINT("% # .0f", 33333.0); + PRINT("% 08i", 33333); + PRINT("%0 8i", 33333); + PRINT("% 0 8i", 33333); + PRINT("% -8i", 33333); + PRINT("%- 8i", 33333); + PRINT("% - 8i", 33333); + PRINT("% 'i", 33333); + PRINT("%' i", 33333); + PRINT("% ' i", 33333); + + printf("\nrepetition of flag '+' --------------------------------------------\n"); + printf("'+' and ' ' not compatible ----------------------------------------\n\n"); + + PRINT("%++++i", 33333); + PRINT("%+#.0f", 33333.0); + PRINT("%#+.0f", 33333.0); + PRINT("%+#+.0f", 33333.0); PRINT("%+08i", 33333); - PRINT("%0+08i", 33333); - PRINT("%0 i", 33333); - PRINT("% 0i", 33333); - PRINT("%0 0i", 33333); - PRINT("%0'i", 33333); - PRINT("%'0i", 33333); - PRINT("%0'0i", 33333); - - - printf("-----------------------------------------------\n"); - printf("- BONUS -\n"); - printf("- conversions : nfge -\n"); - printf("- flags : l,ll,h,hh,#,', ,+ -\n"); - printf("-----------------------------------------------\n\n"); - - // PRINT("%#X", 8645); - // PRINT("%#.7X", 8645); - // PRINT("%#010.7X", 8645); - // PRINT("%#10.7X", 8645); - // PRINT("%#10X", 8645); - // PRINT("%#.10X", 8645); - // PRINT("%#10.10X", 8645); - // PRINT("%#010X", 8645); - - printf("-----------------------------------------------\n"); - printf("- ADD -\n"); - printf("- flags : $ -\n"); - printf("-----------------------------------------------\n\n"); - - // PRINT("%1$*2$i", 3, 2); - // PRINT("%2$*1$i", 3, 2); - + PRINT("%0+8i", 33333); + PRINT("%+0+8i", 33333); + PRINT("%+-8i", 33333); + PRINT("%-+8i", 33333); + PRINT("%+-+8i", 33333); + PRINT("%+'i", 33333); + PRINT("%'+i", 33333); + PRINT("%+'+i", 33333); + } + } + + if (ac == 2 && !strcmp(av[1], "error")) + { printf("-----------------------------------------------\n"); printf("- errors -\n"); printf("-----------------------------------------------\n\n"); - printf("(\"%%i\",3,2) : "); printf("'%i'", 3, 2); printf(" too much argments\n\n"); - printf("(\"%%i-%%i\",3) : "); printf("'%i-%i'", 3); printf(" not enough arguments\n\n"); - printf("(\"%%-03i\",1) : "); printf("'%-03i'", 1); printf(" flag 0 is ignored when - is present\n\n"); - printf("(\"%%010s\",str) : "); printf("'%010s'", str); printf(" flag 0 has undefined behavior with s specifier\n\n"); - printf("(\"%%010c\",c) : "); printf("'%010c'", c); printf(" flag 0 has undefined behavior with c specifier\n\n"); - printf("(\"%%03p\",str) : "); printf("'%03p'\n", str); printf(" flag 0 has undefined behavior with p specifier\n\n"); - printf("(\"%%.-7X\",8645) : "); printf("'%.-7X'", 8645); printf(" invalid flag - for .precision\n\n"); - printf("(\"%%\",8645) : "); printf("'%'", 8645); printf(" missing conversion specifier\n\n"); - 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 : "); printf("'% +i'\n", 33); printf(" flag ' ' is ignored when '+' is present\n\n"); - printf("(\"%%-0i\", 33 : "); printf("'%-0i'\n", 33); printf(" flag '0' is ignored when '-' is present\n\n"); + printf("(\"%%i\",3,2) : "); ft_printf("'%i'", 3, 2); printf(" too much argments\n\n"); + printf("(\"%%i-%%i\",3) : "); ft_printf("'%i-%i'", 3); printf(" not enough arguments\n\n"); + printf("(\"%%-03i\",1) : "); ft_printf("'%-03i'", 1); printf(" flag 0 is ignored when - is present\n\n"); + printf("(\"%%010s\",\"str\") : "); ft_printf("'%010s'", "str"); printf(" flag 0 has undefined behavior with s specifier\n\n"); + printf("(\"%%010c\",'c') : "); ft_printf("'%010c'", 'c'); printf(" flag 0 has undefined behavior with c specifier\n\n"); + printf("(\"%%03p\",\"str\") : "); ft_printf("'%03p'\n", "str"); printf(" flag 0 has undefined behavior with p specifier\n\n"); + printf("(\"%%.-7X\",8645) : "); ft_printf("'%.-7X'", 8645); printf(" invalid flag - for .precision\n\n"); + printf("(\"%%\",8645) : "); ft_printf("'%'", 8645); printf(" missing conversion specifier\n\n"); + printf("(\"%%2$i-%%i\",3,2) : "); ft_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(" flag ' ' is ignored when '+' is present\n\n"); + printf("(\"%%-0i\", 33 : "); ft_printf("'%-0i'\n", 33); printf(" flag '0' is ignored when '-' is present\n\n"); } - /* ////////////////////////////////////////////////////////////////// */ - /* 295gk */ - /* ////////////////////////////////////////////////////////////////// */ + printf("\n----------------------------------------------------------------\n"); + printf("%% flags width .precision length specifier \n"); + printf("%% 0-#' + * 0..9 .* 0..9 hhhlllLjtz diuxXcsp%%efgnEFGaACSo\n"); + printf("%% 0- * 0..9 .* 0..9 diuxXcsp%% \n"); + printf("%% #' + hhhlll efgn \n"); + printf("----------------------------------------------------------------\n\n"); close(save); if (error != 0) diff --git a/out1.txt b/out1.txt new file mode 100644 index 0000000..e69de29 diff --git a/out2.txt b/out2.txt new file mode 100644 index 0000000..11afd15 --- /dev/null +++ b/out2.txt @@ -0,0 +1,2 @@ +printf2:test1 +printf2:test2 diff --git a/srcs/aside.c b/srcs/aside.c index a91035d..43ff005 100644 --- a/srcs/aside.c +++ b/srcs/aside.c @@ -6,7 +6,7 @@ /* By: hulamy +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/02/19 16:23:01 by hulamy #+# #+# */ -/* Updated: 2020/02/24 14:34:16 by hulamy ### ########.fr */ +/* Updated: 2020/02/26 17:43:21 by hulamy ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/test.c b/test.c index 24d6f9b..84735a8 100644 --- a/test.c +++ b/test.c @@ -11,23 +11,23 @@ // ft_printf(string "\n"); \ // ft_printf(string "\n\n"); -#define PRINT(string) \ - dup2(out1, 1); \ - write(1, "printf :" string "\n", 14); \ - dup2(out2, 1); \ - write(1, "printf2:" string "\n", 14); \ - dup2(save, 1); \ - write(1, "printf :" string "\n", 14); \ - write(1, "printf2:" string "\n\n", 15); \ - //#define PRINT(string) \ // dup2(out1, 1); \ -// printf("printf :" string "\n"); \ +// write(1, "printf :" string "\n", 14); \ // dup2(out2, 1); \ -// ft_printf("printf2:" string "\n"); \ +// write(1, "printf2:" string "\n", 14); \ // dup2(save, 1); \ -// printf("printf :" string "\n"); \ -// ft_printf("printf2:" string "\n\n"); +// write(1, "printf :" string "\n", 14); \ +// write(1, "printf2:" string "\n\n", 15); \ + +#define PRINT(string) \ + dup2(out1, 1); \ + printf("printf :" string "\n"); \ + dup2(out2, 1); \ + ft_printf("printf2:" string "\n"); \ + dup2(save, 1); \ + printf("printf :" string "\n"); \ + ft_printf("printf2:" string "\n\n"); //#define PRINT(string) \ // printf("printf :" string "\n"); \