resolue probleme signe moins avec flag zero mais erreur norme

This commit is contained in:
Hugo LAMY
2020-03-09 15:06:54 +01:00
parent 12d30893f8
commit c55004d845
4 changed files with 35 additions and 5 deletions

24
main.c
View File

@@ -301,7 +301,26 @@ int main(int ac, char **av)
// PRINT("%.0i", 000); // PRINT("%.0i", 000);
// PRINT("%.0X", 0); // PRINT("%.0X", 0);
// PRINT("%08i", 33333); // 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("%03i", 1);
PRINT("%03u", 1); PRINT("%03u", 1);
PRINT("%03x", 1); PRINT("%03x", 1);
PRINT("%05i", -12);
PRINT("%03%"); PRINT("%03%");
PRINT("%0%"); PRINT("%0%");
} }
@@ -384,6 +404,8 @@ int main(int ac, char **av)
PRINT("%6%"); PRINT("%6%");
PRINT("%16c", 'a'); PRINT("%16c", 'a');
PRINT("%16c", (char)97); PRINT("%16c", (char)97);
PRINT("%5i", -12);
PRINT("%05i", -12);
} }
if (ac == 2 || !strcmp(av[2], "precision")) if (ac == 2 || !strcmp(av[2], "precision"))

View File

@@ -1 +1 @@
33333 -00012

View File

@@ -1 +1 @@
33333 -00012

View File

@@ -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 *width_flags(char *print, char *s, int width, int zero)
{ {
char *tmp; char *tmp;
char *minus;
char c; char c;
int len; int len;
@@ -107,9 +108,16 @@ char *width_flags(char *print, char *s, int width, int zero)
} }
else else
{ {
c = (ft_strchr(s, '0')) ? '0' : ' '; // c = (ft_strchr(s, '0')) ? '0' : ' ';
ft_memset(tmp, c, width - len); // 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)); 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); free(print);
return (tmp); return (tmp);