fonction width_flag a la norme

This commit is contained in:
hugodu69
2020-03-07 16:18:43 +01:00
parent 3ed91abcff
commit 2ec251c172
2 changed files with 7 additions and 16 deletions

1
main.c
View File

@@ -301,6 +301,7 @@ int main(int ac, char **av)
PRINT("%.0i", 000); PRINT("%.0i", 000);
PRINT("%.0X", 0); PRINT("%.0X", 0);
PRINT("%.i", 0); PRINT("%.i", 0);
PRINT("%08i", 33333);
} }
/* ////////////////////////////////////////////////////////////////// */ /* ////////////////////////////////////////////////////////////////// */

View File

@@ -95,31 +95,21 @@ char *width_flags(char *print, char *s, int width, int zero)
{ {
char *tmp; char *tmp;
char c; char c;
int i; int len;
int j;
i = 0; len = ft_strlen(print) + zero;
j = 0;
if(!(tmp = ft_strnew(width))) if(!(tmp = ft_strnew(width)))
return (NULL); return (NULL);
if (ft_strchr(s, '-')) if (ft_strchr(s, '-'))
{ {
if (print[j] == '\0') ft_memmove(tmp, print, len);
tmp[i++] = '\0'; ft_memset(tmp + len, ' ', width - len);
while (print[j] != '\0')
tmp[i++] = print[j++];
while (i < width)
tmp[i++] = ' ';
} }
else else
{ {
c = (ft_strchr(s, '0')) ? '0' : ' '; c = (ft_strchr(s, '0')) ? '0' : ' ';
while (i < (width - ft_strlen(print) - zero)) ft_memset(tmp, c, width - len);
tmp[i++] = c; ft_memmove(ft_strchr(tmp, '\0') + zero, print, ft_strlen(print));
if (print[j] == '\0')
tmp[i++] = '\0';
while (print[j] != '\0')
tmp[i++] = print[j++];
} }
free(print); free(print);
return (tmp); return (tmp);