diff options
Diffstat (limited to 'convert_char.c')
| -rw-r--r-- | convert_char.c | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/convert_char.c b/convert_char.c index ee30a2c..d6c3422 100644 --- a/convert_char.c +++ b/convert_char.c @@ -1,4 +1,5 @@ #include <stdarg.h> +#include <stdlib.h> #include "header.h" char *convert_char(va_list ap, t_pformat *pformat) @@ -8,6 +9,33 @@ char *convert_char(va_list ap, t_pformat *pformat) return (NULL); str[0] = va_arg(ap, int); str[1] = '\0'; - str = handle_padding(pformat, str); + + /* str = handle_padding(pformat, str); */ + pformat->size = 1;//ft_strlen(str); + /* return (str); */ + char *tmp; + int i; + if (1 >= pformat->min_width) + return (str); + if ((tmp = (char*)malloc(sizeof(char) * (pformat->min_width + 1))) == NULL) + return (NULL); + if (pformat->flags & FLAG_LEFT_ADJUSTED) + { + i = 1; + ft_memcpy(tmp, str, 2); + while (i < pformat->min_width) + tmp[i++] = ' '; + tmp[i] = 0; + } + else + { + i = 0; + while (i <= pformat->min_width - 1) + tmp[i++] = pformat->flags & FLAG_ZERO_PADDING ? '0' : ' '; + ft_memcpy(tmp + i - 1, str, 2); + } + free(str); + pformat->size = pformat->min_width; + return (tmp); return (str); } |
