aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCharles <sircharlesaze@gmail.com>2019-10-30 23:35:40 +0100
committerCharles <sircharlesaze@gmail.com>2019-10-30 23:35:40 +0100
commitd63d6916249f5b40b81097854d8ca2c9d4d7d071 (patch)
treeb98fe6a060fdb632d00ddf9385f6579a32619f38
parent22f334a19cabebf10727d7894102946ba23d0e37 (diff)
downloadft_printf-d63d6916249f5b40b81097854d8ca2c9d4d7d071.tar.gz
ft_printf-d63d6916249f5b40b81097854d8ca2c9d4d7d071.tar.bz2
ft_printf-d63d6916249f5b40b81097854d8ca2c9d4d7d071.zip
Normed converters
-rw-r--r--Makefile2
-rw-r--r--convert_char.c43
-rw-r--r--convert_hex.c27
-rw-r--r--convert_hex_low.c37
-rw-r--r--convert_int.c34
-rw-r--r--convert_percent.c16
-rw-r--r--convert_ptr.c15
-rw-r--r--convert_str.c18
-rw-r--r--convert_uint.c17
-rw-r--r--extract.c4
-rw-r--r--ft_printf.c4
-rw-r--r--header.h54
-rw-r--r--main.c88
-rw-r--r--parse.c4
-rw-r--r--printer.c23
-rwxr-xr-xtestbin27460 -> 27596 bytes
-rw-r--r--utils.c17
17 files changed, 210 insertions, 193 deletions
diff --git a/Makefile b/Makefile
index 2dd5e35..4463e44 100644
--- a/Makefile
+++ b/Makefile
@@ -6,7 +6,7 @@
# By: cacharle <marvin@42.fr> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2019/10/28 17:41:14 by cacharle #+# #+# #
-# Updated: 2019/10/30 15:58:32 by cacharle ### ########.fr #
+# Updated: 2019/10/30 23:06:05 by cacharle ### ########.fr #
# #
# **************************************************************************** #
diff --git a/convert_char.c b/convert_char.c
index d6c3422..083a6e9 100644
--- a/convert_char.c
+++ b/convert_char.c
@@ -1,28 +1,33 @@
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* convert_char.c :+: :+: :+: */
+/* +:+ +:+ +:+ */
+/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
+/* +#+#+#+#+#+ +#+ */
+/* Created: 2019/10/30 23:22:29 by cacharle #+# #+# */
+/* Updated: 2019/10/30 23:33:44 by cacharle ### ########.fr */
+/* */
+/* ************************************************************************** */
+
#include <stdarg.h>
#include <stdlib.h>
+#include "libft.h"
#include "header.h"
-char *convert_char(va_list ap, t_pformat *pformat)
+static char *handle_padding_char(t_pformat *pformat, char *str)
{
- char *str = ft_strnew(2);
- if (str == NULL)
- return (NULL);
- str[0] = va_arg(ap, int);
- str[1] = '\0';
+ char *tmp;
+ int i;
- /* str = handle_padding(pformat, str); */
- pformat->size = 1;//ft_strlen(str);
- /* return (str); */
- char *tmp;
- int i;
+ pformat->size = 1;
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);
+ ft_memcpy(tmp, str, (i = 1) + 1);
while (i < pformat->min_width)
tmp[i++] = ' ';
tmp[i] = 0;
@@ -37,5 +42,15 @@ char *convert_char(va_list ap, t_pformat *pformat)
free(str);
pformat->size = pformat->min_width;
return (tmp);
- return (str);
+}
+
+char *convert_char(va_list ap, t_pformat *pformat)
+{
+ char *str;
+
+ if ((str = ft_strnew(2)) == NULL)
+ return (NULL);
+ str[0] = va_arg(ap, int);
+ str[1] = '\0';
+ return (handle_padding_char(pformat, str));
}
diff --git a/convert_hex.c b/convert_hex.c
index 457b249..9826771 100644
--- a/convert_hex.c
+++ b/convert_hex.c
@@ -1,23 +1,32 @@
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* convert_hex.c :+: :+: :+: */
+/* +:+ +:+ +:+ */
+/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
+/* +#+#+#+#+#+ +#+ */
+/* Created: 2019/10/30 23:23:06 by cacharle #+# #+# */
+/* Updated: 2019/10/30 23:29:42 by cacharle ### ########.fr */
+/* */
+/* ************************************************************************** */
+
#include <stdarg.h>
#include <stdlib.h>
+#include "libft.h"
#include "header.h"
char *convert_hex(va_list ap, t_pformat *pformat)
{
- long long unsigned int n;
+ char *str;
+ char *tmp;
+ long long unsigned int n;
- if (pformat->flags & FLAG_SHORT)
- n = va_arg(ap, int);
- else if (pformat->flags & FLAG_SHORT_SHORT)
- n = va_arg(ap, int);
- else if (pformat->flags & FLAG_LONG)
+ if (pformat->flags & FLAG_LONG)
n = va_arg(ap, long unsigned int);
else if (pformat->flags & FLAG_LONG_LONG)
n = va_arg(ap, long long unsigned int);
else
n = va_arg(ap, unsigned int);
-
- char *str;
str = ITOA_HEX_LOW(n);
if (pformat->type == 'X')
ft_strtoupper(str);
@@ -30,7 +39,7 @@ char *convert_hex(va_list ap, t_pformat *pformat)
}
if (pformat->flags & FLAG_ALTERNATE && n != 0)
{
- char *tmp = ft_strjoin(pformat->type == 'X' ? "0X" : "0x", str);
+ tmp = ft_strjoin(pformat->type == 'X' ? "0X" : "0x", str);
free(str);
str = tmp;
}
diff --git a/convert_hex_low.c b/convert_hex_low.c
deleted file mode 100644
index 00b2d76..0000000
--- a/convert_hex_low.c
+++ /dev/null
@@ -1,37 +0,0 @@
-#include <stdarg.h>
-#include <stdlib.h>
-#include "header.h"
-
-char *convert_hex_low(va_list ap, t_pformat *pformat)
-{
- long long unsigned int n;
-
- if (pformat->flags & FLAG_SHORT)
- n = va_arg(ap, int);
- else if (pformat->flags & FLAG_SHORT_SHORT)
- n = va_arg(ap, int);
- else if (pformat->flags & FLAG_LONG)
- n = va_arg(ap, long unsigned int);
- else if (pformat->flags & FLAG_LONG_LONG)
- n = va_arg(ap, long long unsigned int);
- else
- n = va_arg(ap, unsigned int);
-
- char *str = ITOA_HEX_LOW(n);
- str = handle_precision(pformat, str);
- if (pformat->flags & FLAG_ZERO_PADDING)
- {
- if (pformat->flags & FLAG_ALTERNATE && n != 0)
- pformat->min_width -= 2;
- str = handle_padding(pformat, str);
- }
- if (pformat->flags & FLAG_ALTERNATE && n != 0)
- {
- char *tmp = ft_strjoin("0x", str);
- free(str);
- str = tmp;
- }
- if (!(pformat->flags & FLAG_ZERO_PADDING))
- str = handle_padding(pformat, str);
- return (str);
-}
diff --git a/convert_int.c b/convert_int.c
index ebc360a..34336d0 100644
--- a/convert_int.c
+++ b/convert_int.c
@@ -1,26 +1,35 @@
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* convert_int.c :+: :+: :+: */
+/* +:+ +:+ +:+ */
+/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
+/* +#+#+#+#+#+ +#+ */
+/* Created: 2019/10/30 23:29:53 by cacharle #+# #+# */
+/* Updated: 2019/10/30 23:32:21 by cacharle ### ########.fr */
+/* */
+/* ************************************************************************** */
+
#include <stdlib.h>
#include <stdarg.h>
+#include "libft.h"
#include "header.h"
char *convert_int(va_list ap, t_pformat *pformat)
{
- char *tmp;
- int is_neg;
- long long int n;
+ char *tmp;
+ int is_neg;
+ long long int n;
+ char *str;
- if (pformat->flags & FLAG_SHORT)
- n = va_arg(ap, int);
- else if (pformat->flags & FLAG_SHORT_SHORT)
- n = va_arg(ap, int);
- else if (pformat->flags & FLAG_LONG)
+ if (pformat->flags & FLAG_LONG)
n = va_arg(ap, long int);
else if (pformat->flags & FLAG_LONG_LONG)
n = va_arg(ap, long long int);
else
n = va_arg(ap, int);
-
is_neg = n < 0;
- char *str = ITOA_DEC(n);
+ str = ITOA_DEC(n);
if (is_neg)
ft_strcpy(str, str + 1);
str = handle_precision(pformat, str);
@@ -28,15 +37,10 @@ char *convert_int(va_list ap, t_pformat *pformat)
{
if (is_neg || pformat->flags & (FLAG_SIGNED | FLAG_SPACE))
pformat->min_width--;
- /* pformat->min_width--; */
str = handle_padding(pformat, str);
}
- /* str[ft_strlen(str)] = 0; */
if (is_neg)
- {
tmp = ft_strjoin("-", str);
- /* printf("%s\n", str); */
- }
else if (pformat->flags & (FLAG_SIGNED | FLAG_SPACE))
tmp = ft_strjoin(pformat->flags & FLAG_SPACE ? " " : "+", str);
else
diff --git a/convert_percent.c b/convert_percent.c
index 4b28f8d..0833748 100644
--- a/convert_percent.c
+++ b/convert_percent.c
@@ -1,11 +1,25 @@
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* convert_percent.c :+: :+: :+: */
+/* +:+ +:+ +:+ */
+/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
+/* +#+#+#+#+#+ +#+ */
+/* Created: 2019/10/30 23:23:27 by cacharle #+# #+# */
+/* Updated: 2019/10/30 23:23:56 by cacharle ### ########.fr */
+/* */
+/* ************************************************************************** */
+
#include <stdarg.h>
+#include "libft.h"
#include "header.h"
char *convert_percent(va_list ap, t_pformat *pformat)
{
- char *str = ft_strdup("%");
+ char *str;
(void)ap;
+ str = ft_strdup("%");
str = handle_padding(pformat, str);
return (str);
}
diff --git a/convert_ptr.c b/convert_ptr.c
index 2c288ac..aa24cb5 100644
--- a/convert_ptr.c
+++ b/convert_ptr.c
@@ -1,11 +1,24 @@
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* convert_ptr.c :+: :+: :+: */
+/* +:+ +:+ +:+ */
+/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
+/* +#+#+#+#+#+ +#+ */
+/* Created: 2019/10/30 23:24:08 by cacharle #+# #+# */
+/* Updated: 2019/10/30 23:25:33 by cacharle ### ########.fr */
+/* */
+/* ************************************************************************** */
+
#include <stdarg.h>
#include <stdlib.h>
#include "header.h"
char *convert_ptr(va_list ap, t_pformat *pformat)
{
- char *str = ITOA_HEX_LOW((long long unsigned int)va_arg(ap, void*));
+ char *str;
+ str = ITOA_HEX_LOW((long long unsigned int)va_arg(ap, void*));
str = handle_precision(pformat, str);
str = add_hex_prefix(str);
str = handle_padding(pformat, str);
diff --git a/convert_str.c b/convert_str.c
index 3cea2dc..c636e32 100644
--- a/convert_str.c
+++ b/convert_str.c
@@ -1,15 +1,27 @@
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* convert_str.c :+: :+: :+: */
+/* +:+ +:+ +:+ */
+/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
+/* +#+#+#+#+#+ +#+ */
+/* Created: 2019/10/30 23:22:25 by cacharle #+# #+# */
+/* Updated: 2019/10/30 23:22:45 by cacharle ### ########.fr */
+/* */
+/* ************************************************************************** */
+
#include <stdarg.h>
+#include "libft.h"
#include "header.h"
char *convert_str(va_list ap, t_pformat *pformat)
{
- char *str = va_arg(ap, char*);
+ char *str;
+ str = va_arg(ap, char*);
str = str == NULL ? ft_strdup("(null)") : ft_strdup(str);
-
if (pformat->precision != -1 && pformat->precision < (int)ft_strlen(str))
str[pformat->precision] = '\0';
str = handle_padding(pformat, str);
-
return (str);
}
diff --git a/convert_uint.c b/convert_uint.c
index 239e47d..a3f5575 100644
--- a/convert_uint.c
+++ b/convert_uint.c
@@ -1,9 +1,22 @@
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* convert_uint.c :+: :+: :+: */
+/* +:+ +:+ +:+ */
+/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
+/* +#+#+#+#+#+ +#+ */
+/* Created: 2019/10/30 23:25:40 by cacharle #+# #+# */
+/* Updated: 2019/10/30 23:26:05 by cacharle ### ########.fr */
+/* */
+/* ************************************************************************** */
+
#include <stdarg.h>
#include "header.h"
char *convert_uint(va_list ap, t_pformat *pformat)
{
- long long unsigned int n;
+ char *str;
+ long long unsigned int n;
if (pformat->flags & FLAG_SHORT)
n = va_arg(ap, int);
@@ -15,7 +28,7 @@ char *convert_uint(va_list ap, t_pformat *pformat)
n = va_arg(ap, long long unsigned int);
else
n = va_arg(ap, unsigned int);
- char *str = ft_itoa_unsigned_base(n, "0123456789");
+ str = ft_itoa_unsigned_base(n, "0123456789");
str = handle_precision(pformat, str);
str = handle_padding(pformat, str);
return (str);
diff --git a/extract.c b/extract.c
index da7df18..6c571bf 100644
--- a/extract.c
+++ b/extract.c
@@ -6,7 +6,7 @@
/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2019/10/29 00:10:36 by cacharle #+# #+# */
-/* Updated: 2019/10/30 04:14:50 by cacharle ### ########.fr */
+/* Updated: 2019/10/30 19:42:16 by cacharle ### ########.fr */
/* */
/* ************************************************************************** */
@@ -29,6 +29,8 @@ char *extract_standalone_flags(t_pformat *pformat, char *fmt)
pformat->flags |= FLAG_SPACE;
if (*fmt == '#')
pformat->flags |= FLAG_ALTERNATE;
+ if (*fmt == '\'')
+ ;
fmt++;
}
if (pformat->flags & FLAG_SIGNED)
diff --git a/ft_printf.c b/ft_printf.c
index cf5e020..0352b52 100644
--- a/ft_printf.c
+++ b/ft_printf.c
@@ -6,7 +6,7 @@
/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2019/10/29 00:15:28 by cacharle #+# #+# */
-/* Updated: 2019/10/30 17:10:32 by cacharle ### ########.fr */
+/* Updated: 2019/10/30 19:58:36 by cacharle ### ########.fr */
/* */
/* ************************************************************************** */
@@ -49,12 +49,12 @@ int ft_printf(const char *format, ...)
if (flist->content->type == 'c')
{
write(1, str, flist->content->size);
- /* printf("\n%d\n", flist->content->size); */
print_len++;
free(str);
}
else
{
+
ft_putstr(str);
print_len += ft_strlen(str);
free(str);
diff --git a/header.h b/header.h
index e3487d2..9667772 100644
--- a/header.h
+++ b/header.h
@@ -6,7 +6,7 @@
/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2019/10/29 00:06:46 by cacharle #+# #+# */
-/* Updated: 2019/10/30 16:59:55 by cacharle ### ########.fr */
+/* Updated: 2019/10/30 23:13:41 by cacharle ### ########.fr */
/* */
/* ************************************************************************** */
@@ -23,7 +23,7 @@
# define HEX_MAJ_SYMBOLS "0123456789ABCDEF"
# define IN_STR(str, c) (ft_strchr(str, c) != NULL)
-# define IS_STANDALONE_FLAG(c) (IN_STR("0-+ #", c))
+# define IS_STANDALONE_FLAG(c) (IN_STR("0-+ #'", c))
# define CONVERSIONS_STR "cspdiuxX%"
@@ -50,14 +50,14 @@
# define FLAG_LONG (1 << 10)
# define FLAG_LONG_LONG (1 << 11)
-#define ITOA_HEX_LOW(x) (ft_itoa_unsigned_base(x, "0123456789abcdef"))
-#define ITOA_HEX_UP(x) (ft_itoa_unsigned_base(x, "0123456789ABCDEF"))
-#define ITOA_DEC(x) (ft_itoa_base(x, "0123456789"))
+# define ITOA_HEX_LOW(x) (ft_itoa_unsigned_base(x, "0123456789abcdef"))
+# define ITOA_HEX_UP(x) (ft_itoa_unsigned_base(x, "0123456789ABCDEF"))
+# define ITOA_DEC(x) (ft_itoa_base(x, "0123456789"))
#include <stdio.h>
-typedef int t_bool;
-typedef short t_flags;
+typedef int t_bool;
+typedef short t_flags;
typedef struct
{
@@ -75,12 +75,6 @@ typedef struct s_flist
t_pformat *content;
} t_flist;
-typedef struct
-{
- char *(*func)(va_list ap, t_pformat *pformat);
- char type;
-} t_converter;
-
/*
** ft_printf.c
*/
@@ -98,20 +92,21 @@ t_pformat *parse_reduced(char *fmt);
** printer.c
*/
-char *convert(t_pformat *pformat, va_list ap);
-char *convert_type(va_list ap, t_pformat *pformat);
-char *handle_padding(t_pformat *pformat, char *str);
-char *handle_precision(t_pformat *pformat, char *str);
-char *add_hex_prefix(char *str);
+char *convert(t_pformat *pformat, va_list ap);
+char *convert_type(va_list ap, t_pformat *pformat);
+char *handle_padding(t_pformat *pformat, char *str);
+char *handle_precision(t_pformat *pformat, char *str);
+char *add_hex_prefix(char *str);
/*
** utils.c
*/
int strrchr_index(const char *s, char c);
-char *ft_itoa_base(long long int n, char *base);
-char *ft_itoa_unsigned_base(long long unsigned int n, char *base);
-char *ft_strtoupper(char *str);
+char *ft_itoa_base(long long int n, char *base);
+char *ft_itoa_unsigned_base(long long unsigned int n,
+ char *base);
+char *ft_strtoupper(char *str);
/*
** extract.c
@@ -120,7 +115,7 @@ char *ft_strtoupper(char *str);
char *extract_standalone_flags(t_pformat *pformat, char *fmt);
char *extract_min_width(t_pformat *pformat, char *fmt);
char *extract_precision(t_pformat *pformat, char *fmt);
-char *extract_length_modifier(t_pformat *pformat, char *fmt);
+char *extract_length_modifier(t_pformat *pformat, char *fmt);
/*
** list.c
@@ -132,17 +127,16 @@ void list_push_front(t_flist **lst, t_flist *new);
void list_pop_front(t_flist **lst);
t_flist *list_reverse(t_flist *lst);
-
/*
** convert_*.c
*/
-char *convert_char(va_list ap, t_pformat *pformat);
-char *convert_str(va_list ap, t_pformat *pformat);
-char *convert_ptr(va_list ap, t_pformat *pformat);
-char *convert_int(va_list ap, t_pformat *pformat);
-char *convert_uint(va_list ap, t_pformat *pformat);
-char *convert_hex(va_list ap, t_pformat *pformat);
-char *convert_percent(va_list ap, t_pformat *pformat);
+char *convert_char(va_list ap, t_pformat *pformat);
+char *convert_str(va_list ap, t_pformat *pformat);
+char *convert_ptr(va_list ap, t_pformat *pformat);
+char *convert_int(va_list ap, t_pformat *pformat);
+char *convert_uint(va_list ap, t_pformat *pformat);
+char *convert_hex(va_list ap, t_pformat *pformat);
+char *convert_percent(va_list ap, t_pformat *pformat);
#endif
diff --git a/main.c b/main.c
index d848b62..5da44fe 100644
--- a/main.c
+++ b/main.c
@@ -6,7 +6,7 @@
/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2019/10/28 04:25:09 by cacharle #+# #+# */
-/* Updated: 2019/10/30 17:35:44 by cacharle ### ########.fr */
+/* Updated: 2019/10/30 23:31:28 by cacharle ### ########.fr */
/* */
/* ************************************************************************** */
@@ -19,48 +19,48 @@ int main()
int test;
ft_printf("%.37ld", -22337203685477l);
- /* ft_printf("char: %c\n", 'r'); */
- /* ft_printf("string: %s\n", "bonjour"); */
- /* ft_printf("pointer: %p\n", &test); */
- /* ft_printf("int: %d or %i\n", 45, 54); */
- /* ft_printf("uint: %u\n", 1 << 31); */
- /* ft_printf("hex lower: %x\n", 0xabcf012); */
- /* ft_printf("hex upper: %X\n", 0xabcf012); */
- /* ft_printf("percent: %%\n"); */
- /* ft_printf("multiple stuff: %d %u %d %x %d\n", 1, -2, 3, 0xa, 5); */
- /* */
- /* ft_printf("precision |%.9d|\n", 43); */
- /* printf("precision |%.9d|\n", 43); */
- /* ft_printf("string precision |%.9s|\n", "jesuisbonjourbonjour"); */
- /* printf("string precision |%.9s|\n", "jesuisbonjourbonjour"); */
- /* ft_printf("min width |%9d|\n", 43); */
- /* printf("min width |%9d|\n", 43); */
- /* ft_printf("zero padding |%09d|\n", 43); */
- /* printf("zero padding |%09d|\n", 43); */
- /* ft_printf("left adjusted |%-9d|\n", 43); */
- /* printf("left adjusted |%-9d|\n", 43); */
- /* ft_printf("string padding |%9s|\n", "bon"); */
- /* printf("string padding |%9s|\n", "bon"); */
- /* */
- /* ft_printf("width wildcard |%*d|\n", 5, 43); */
- /* printf("width wildcard |%*d|\n", 5, 43); */
- /* ft_printf("precision wildcard |%.*d|\n", 5, 43); */
- /* printf("precision wildcard |%.*d|\n", 5, 43); */
- /* ft_printf("precision/width wildcard |%*.*d|\n", 5, 3, 43); */
- /* printf("precision/width wildcard |%*.*d|\n", 5, 3, 43); */
- /* ft_printf("left adjusted |%*d|\n", -5, 43); */
- /* printf("left adjusted |%*d|\n", -5, 43); */
- /* */
- /* ft_printf("overwrite |%*3d|\n", 5, 43); */
- /* printf("overwrite |%*3d|\n", 5, 43); */
- /* ft_printf("overwrite neg |%*-1d|\n", 0, 43); */
- /* printf("overwrite neg |%*-1d|\n", 0, 43); */
- /* */
- /* ft_printf("pointer field width |%15p|\n", &test); */
- /* printf("pointer field width |%15p|\n", &test); */
- /* ft_printf("pointer precision |%.15p|\n", &test); */
- /* printf("pointer precision |%.15p|\n", &test); */
- /* ft_printf("pointer precision/width |%20.15p|\n", &test); */
- /* printf("pointer precision/width |%20.15p|\n", &test); */
+ ft_printf("char: %c\n", 'r');
+ ft_printf("string: %s\n", "bonjour");
+ ft_printf("pointer: %p\n", &test);
+ ft_printf("int: %d or %i\n", 45, 54);
+ ft_printf("uint: %u\n", 1 << 31);
+ ft_printf("hex lower: %x\n", 0xabcf012);
+ ft_printf("hex upper: %X\n", 0xabcf012);
+ ft_printf("percent: %%\n");
+ ft_printf("multiple stuff: %d %u %d %x %d\n", 1, -2, 3, 0xa, 5);
+
+ ft_printf("precision |%.9d|\n", 43);
+ printf("precision |%.9d|\n", 43);
+ ft_printf("string precision |%.9s|\n", "jesuisbonjourbonjour");
+ printf("string precision |%.9s|\n", "jesuisbonjourbonjour");
+ ft_printf("min width |%9d|\n", 43);
+ printf("min width |%9d|\n", 43);
+ ft_printf("zero padding |%09d|\n", 43);
+ printf("zero padding |%09d|\n", 43);
+ ft_printf("left adjusted |%-9d|\n", 43);
+ printf("left adjusted |%-9d|\n", 43);
+ ft_printf("string padding |%9s|\n", "bon");
+ printf("string padding |%9s|\n", "bon");
+
+ ft_printf("width wildcard |%*d|\n", 5, 43);
+ printf("width wildcard |%*d|\n", 5, 43);
+ ft_printf("precision wildcard |%.*d|\n", 5, 43);
+ printf("precision wildcard |%.*d|\n", 5, 43);
+ ft_printf("precision/width wildcard |%*.*d|\n", 5, 3, 43);
+ printf("precision/width wildcard |%*.*d|\n", 5, 3, 43);
+ ft_printf("left adjusted |%*d|\n", -5, 43);
+ printf("left adjusted |%*d|\n", -5, 43);
+
+ ft_printf("overwrite |%*3d|\n", 5, 43);
+ printf("overwrite |%*3d|\n", 5, 43);
+ ft_printf("overwrite neg |%*-1d|\n", 0, 43);
+ printf("overwrite neg |%*-1d|\n", 0, 43);
+
+ ft_printf("pointer field width |%15p|\n", &test);
+ printf("pointer field width |%15p|\n", &test);
+ ft_printf("pointer precision |%.15p|\n", &test);
+ printf("pointer precision |%.15p|\n", &test);
+ ft_printf("pointer precision/width |%20.15p|\n", &test);
+ printf("pointer precision/width |%20.15p|\n", &test);
return 0;
}
diff --git a/parse.c b/parse.c
index d4ad92e..48ae6f3 100644
--- a/parse.c
+++ b/parse.c
@@ -6,7 +6,7 @@
/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2019/10/29 00:11:33 by cacharle #+# #+# */
-/* Updated: 2019/10/30 17:02:09 by cacharle ### ########.fr */
+/* Updated: 2019/10/30 23:31:12 by cacharle ### ########.fr */
/* */
/* ************************************************************************** */
@@ -19,7 +19,7 @@
** %(?:\d+\$)?[-]?(?:[0]|'.{1})?-?\d*(?:\.\d+)?[cdusxX]
*/
-int parse(char *format, t_flist **flist)
+int parse(char *format, t_flist **flist)
{
t_flist *tmp;
t_pformat *parsed;
diff --git a/printer.c b/printer.c
index 6ee88ff..4b5ae43 100644
--- a/printer.c
+++ b/printer.c
@@ -6,16 +6,16 @@
/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2019/10/28 23:19:24 by cacharle #+# #+# */
-/* Updated: 2019/10/30 18:04:06 by cacharle ### ########.fr */
+/* Updated: 2019/10/30 23:30:58 by cacharle ### ########.fr */
/* */
/* ************************************************************************** */
#include <unistd.h>
#include <stdlib.h>
#include <stdarg.h>
+#include "libft.h"
#include "header.h"
-
char *convert(t_pformat *pformat, va_list ap)
{
char *str;
@@ -89,25 +89,6 @@ char *handle_padding(t_pformat *pformat, char *str)
return (tmp);
}
-/* char *handle_nbr_padding(t_pformat *pformat, char *str) */
-/* { */
-/* char *tmp; */
-/* int len = ft_strlen(str); */
-/* int i; */
-/* */
-/* if (!(IN_STR("+-", str[0]) && pformat->flags & FLAG_ZERO_PADDING)) */
-/* return (str); */
-/* tmp[0] = str[0]; */
-/* len--; */
-/* i = 1; */
-/* while (i < pformat->min_width - len) */
-/* tmp[i++] = '0'; */
-/* ft_strcpy(tmp + i , str + 1); */
-/* ft_strcpy(str, tmp); */
-/* free(tmp); */
-/* return (str); */
-/* } */
-
char *handle_precision(t_pformat *pformat, char *str)
{
int len;
diff --git a/test b/test
index 83e1b3b..2caf91e 100755
--- a/test
+++ b/test
Binary files differ
diff --git a/utils.c b/utils.c
index 844f10c..d741c3a 100644
--- a/utils.c
+++ b/utils.c
@@ -6,7 +6,7 @@
/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2019/10/29 00:12:40 by cacharle #+# #+# */
-/* Updated: 2019/10/30 18:04:21 by cacharle ### ########.fr */
+/* Updated: 2019/10/30 23:15:27 by cacharle ### ########.fr */
/* */
/* ************************************************************************** */
@@ -16,7 +16,7 @@
#define MIN_INT (1 << 31)
#define MAX_INT (~(1 << 31))
-int strrchr_index(const char *s, char c)
+int strrchr_index(const char *s, char c)
{
int i;
@@ -54,14 +54,13 @@ static int nbrlen_radix(long long int nbr, int radix)
char *ft_itoa_base(long long int n, char *base)
{
- char *str;
- int len;
- int radix;
+ char *str;
+ int len;
+ int radix;
long long unsigned int u_nbr;
radix = ft_strlen(base);
len = nbrlen_radix(n, radix);
- /* printf("%d\n", len); */
if ((str = (char*)malloc(sizeof(char) * (len + 1))) == NULL)
return (NULL);
str[len] = '\0';
@@ -70,11 +69,9 @@ char *ft_itoa_base(long long int n, char *base)
str[0] = '-';
while (--len >= (n < 0 ? 1 : 0))
{
- /* printf("u > %ld\n", u_nbr); */
str[len] = base[u_nbr % radix];
u_nbr /= radix;
}
- /* printf("%s\n", str); */
return (str);
}
@@ -93,7 +90,7 @@ static int nbrlen_unsigned_radix(long long unsigned int nbr, int radix)
return (counter);
}
-char *ft_itoa_unsigned_base(long long unsigned int n, char *base)
+char *ft_itoa_unsigned_base(long long unsigned int n, char *base)
{
char *str;
int len;
@@ -112,7 +109,7 @@ char *ft_itoa_unsigned_base(long long unsigned int n, char *base)
return (str);
}
-char *ft_strtoupper(char *str)
+char *ft_strtoupper(char *str)
{
int i;