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("%.0X", 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 c;
int i;
int j;
int len;
i = 0;
j = 0;
len = ft_strlen(print) + zero;
if(!(tmp = ft_strnew(width)))
return (NULL);
if (ft_strchr(s, '-'))
{
if (print[j] == '\0')
tmp[i++] = '\0';
while (print[j] != '\0')
tmp[i++] = print[j++];
while (i < width)
tmp[i++] = ' ';
ft_memmove(tmp, print, len);
ft_memset(tmp + len, ' ', width - len);
}
else
{
c = (ft_strchr(s, '0')) ? '0' : ' ';
while (i < (width - ft_strlen(print) - zero))
tmp[i++] = c;
if (print[j] == '\0')
tmp[i++] = '\0';
while (print[j] != '\0')
tmp[i++] = print[j++];
ft_memset(tmp, c, width - len);
ft_memmove(ft_strchr(tmp, '\0') + zero, print, ft_strlen(print));
}
free(print);
return (tmp);