aboutsummaryrefslogtreecommitdiff
path: root/convert_char.c
diff options
context:
space:
mode:
Diffstat (limited to 'convert_char.c')
-rw-r--r--convert_char.c30
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);
}