diff options
| author | Charles <sircharlesaze@gmail.com> | 2019-10-30 23:35:40 +0100 |
|---|---|---|
| committer | Charles <sircharlesaze@gmail.com> | 2019-10-30 23:35:40 +0100 |
| commit | d63d6916249f5b40b81097854d8ca2c9d4d7d071 (patch) | |
| tree | b98fe6a060fdb632d00ddf9385f6579a32619f38 | |
| parent | 22f334a19cabebf10727d7894102946ba23d0e37 (diff) | |
| download | ft_printf-d63d6916249f5b40b81097854d8ca2c9d4d7d071.tar.gz ft_printf-d63d6916249f5b40b81097854d8ca2c9d4d7d071.tar.bz2 ft_printf-d63d6916249f5b40b81097854d8ca2c9d4d7d071.zip | |
Normed converters
| -rw-r--r-- | Makefile | 2 | ||||
| -rw-r--r-- | convert_char.c | 43 | ||||
| -rw-r--r-- | convert_hex.c | 27 | ||||
| -rw-r--r-- | convert_hex_low.c | 37 | ||||
| -rw-r--r-- | convert_int.c | 34 | ||||
| -rw-r--r-- | convert_percent.c | 16 | ||||
| -rw-r--r-- | convert_ptr.c | 15 | ||||
| -rw-r--r-- | convert_str.c | 18 | ||||
| -rw-r--r-- | convert_uint.c | 17 | ||||
| -rw-r--r-- | extract.c | 4 | ||||
| -rw-r--r-- | ft_printf.c | 4 | ||||
| -rw-r--r-- | header.h | 54 | ||||
| -rw-r--r-- | main.c | 88 | ||||
| -rw-r--r-- | parse.c | 4 | ||||
| -rw-r--r-- | printer.c | 23 | ||||
| -rwxr-xr-x | test | bin | 27460 -> 27596 bytes | |||
| -rw-r--r-- | utils.c | 17 |
17 files changed, 210 insertions, 193 deletions
@@ -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); @@ -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); @@ -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 @@ -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; } @@ -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; @@ -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; Binary files differ@@ -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; |
