diff --git a/main.c b/main.c index 0d4ae9b..fb022a7 100644 --- a/main.c +++ b/main.c @@ -301,7 +301,26 @@ int main(int ac, char **av) // PRINT("%.0i", 000); // PRINT("%.0X", 0); // PRINT("%08i", 33333); - PRINT("%.i", 0); + // PRINT("%.i", 0); + PRINT("%+d", 12); + PRINT("%+d", -12); + PRINT("%+i", 12); + PRINT("%+i", -12); + PRINT("%+05i", -12); + PRINT("%05i", -12); + PRINT("%07.5i", -12); + // PRINT("%+u", 12); + // PRINT("%+u", -12); + // PRINT("%+x", 12); + // PRINT("%+x", -12); + // PRINT("%+X", 12); + // PRINT("%+X", -12); + // PRINT("%+c", 12); + // PRINT("%+c", -12); + // PRINT("%+s", "12"); + // PRINT("%+s", "-12"); + // PRINT("%+p", 12); + // PRINT("%+p", -12); } /* ////////////////////////////////////////////////////////////////// */ @@ -349,6 +368,7 @@ int main(int ac, char **av) PRINT("%03i", 1); PRINT("%03u", 1); PRINT("%03x", 1); + PRINT("%05i", -12); PRINT("%03%"); PRINT("%0%"); } @@ -384,6 +404,8 @@ int main(int ac, char **av) PRINT("%6%"); PRINT("%16c", 'a'); PRINT("%16c", (char)97); + PRINT("%5i", -12); + PRINT("%05i", -12); } if (ac == 2 || !strcmp(av[2], "precision")) diff --git a/outf.txt b/outf.txt index 5c94524..149777b 100644 --- a/outf.txt +++ b/outf.txt @@ -1 +1 @@ -33333 + -00012 diff --git a/outft.txt b/outft.txt index 5c94524..149777b 100644 --- a/outft.txt +++ b/outft.txt @@ -1 +1 @@ -33333 + -00012 diff --git a/srcs/ft_flag_transform.c b/srcs/ft_flag_transform.c index 75f0766..6b29c9e 100644 --- a/srcs/ft_flag_transform.c +++ b/srcs/ft_flag_transform.c @@ -94,6 +94,7 @@ char *ft_precision(char *s, char *print, char *type) char *width_flags(char *print, char *s, int width, int zero) { char *tmp; + char *minus; char c; int len; @@ -107,9 +108,16 @@ char *width_flags(char *print, char *s, int width, int zero) } else { - c = (ft_strchr(s, '0')) ? '0' : ' '; - ft_memset(tmp, c, width - len); +// c = (ft_strchr(s, '0')) ? '0' : ' '; +// ft_memset(tmp, c, width - len); + ft_memset(tmp, (ft_strchr(s, '0')) ? '0' : ' ', width - len); ft_memmove(ft_strchr(tmp, '\0') + zero, print, ft_strlen(print)); +// if (c == '0' && (minus = ft_strchr(tmp, '-'))) + if (ft_strchr(s, '0') && (minus = ft_strchr(tmp, '-'))) + { + minus[0] = '0'; + tmp[0] = '-'; + } } free(print); return (tmp);