Bonus first try
This commit is contained in:
16
Makefile
16
Makefile
@@ -6,7 +6,7 @@
|
|||||||
# By: gbaconni@student.42lausanne.ch +#+ +:+ +#+ #
|
# By: gbaconni@student.42lausanne.ch +#+ +:+ +#+ #
|
||||||
# +#+#+#+#+#+ +#+ #
|
# +#+#+#+#+#+ +#+ #
|
||||||
# Created: 2022/01/18 15:11:16 by gbaconni #+# #+# #
|
# Created: 2022/01/18 15:11:16 by gbaconni #+# #+# #
|
||||||
# Updated: 2022/04/26 12:43:41 by gbaconni ### ########.fr #
|
# Updated: 2022/04/26 17:47:55 by gbaconni ### ########.fr #
|
||||||
# #
|
# #
|
||||||
# **************************************************************************** #
|
# **************************************************************************** #
|
||||||
#
|
#
|
||||||
@@ -74,6 +74,12 @@ fclean: clean
|
|||||||
re: fclean all
|
re: fclean all
|
||||||
@$(MAKE) -C $(LIBFTPRINTF) re
|
@$(MAKE) -C $(LIBFTPRINTF) re
|
||||||
|
|
||||||
|
bonus:
|
||||||
|
@$(MAKE) -C $(LIBFTPRINTF) bonus
|
||||||
|
|
||||||
|
rebonus:
|
||||||
|
@$(MAKE) -C $(LIBFTPRINTF) rebonus
|
||||||
|
|
||||||
check:
|
check:
|
||||||
@$(MAKE) -C $(LIBFTPRINTF) check
|
@$(MAKE) -C $(LIBFTPRINTF) check
|
||||||
|
|
||||||
@@ -117,16 +123,14 @@ test3: fast
|
|||||||
test42: clean $(NAME)
|
test42: clean $(NAME)
|
||||||
@$(PREFIX) ./$(NAME) "Hello World %% %44s %d %c %x %p" "Lausanne" 42 C 66 "C"
|
@$(PREFIX) ./$(NAME) "Hello World %% %44s %d %c %x %p" "Lausanne" 42 C 66 "C"
|
||||||
@$(PREFIX) ./$(NAME) "Characters: %c %c \n" 'a' 65
|
@$(PREFIX) ./$(NAME) "Characters: %c %c \n" 'a' 65
|
||||||
@$(PREFIX) ./$(NAME) "Decimals: %d %ld\n" 1977 650000L
|
@$(PREFIX) ./$(NAME) "Decimals: %d\n" 1977
|
||||||
@$(PREFIX) ./$(NAME) "Preceding with blanks: %10d \n" 1977
|
@$(PREFIX) ./$(NAME) "Preceding with blanks: %10d \n" 1977
|
||||||
@$(PREFIX) ./$(NAME) "Preceding with zeros: %010d \n" 1977
|
@$(PREFIX) ./$(NAME) "Preceding with zeros: %010d \n" 1977
|
||||||
@$(PREFIX) ./$(NAME) "Some different radices: %d %x %o %#x %#o \n" 100 100 100 100 100
|
@$(PREFIX) ./$(NAME) "Some different radices: %d %x %#x\n" 100 100 100
|
||||||
@$(PREFIX) ./$(NAME) "floats: %4.2f %+.0e %E \n" 3.1416 3.1416 3.1416
|
|
||||||
@$(PREFIX) ./$(NAME) "Width trick: %*d \n" 5 10
|
@$(PREFIX) ./$(NAME) "Width trick: %*d \n" 5 10
|
||||||
@$(PREFIX) ./$(NAME) "%s \n" "A string"
|
|
||||||
|
|
||||||
watch:
|
watch:
|
||||||
@read -p "cmd: " cmd; while :; do clear; date "+%F %T"; echo; $${cmd} 2>&1 | tail -n 20; sleep 2; done
|
@read -p "cmd: " cmd; while :; do clear; date "+%F %T"; echo; $${cmd} 2>&1 | tail -n 20 || true; sleep 2; done
|
||||||
|
|
||||||
doc:
|
doc:
|
||||||
@curl -s -L -z fr.subject.pdf -o fr.subject.pdf $(PDF_FR)
|
@curl -s -L -z fr.subject.pdf -o fr.subject.pdf $(PDF_FR)
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
# By: gbaconni@student.42lausanne.ch +#+ +:+ +#+ #
|
# By: gbaconni@student.42lausanne.ch +#+ +:+ +#+ #
|
||||||
# +#+#+#+#+#+ +#+ #
|
# +#+#+#+#+#+ +#+ #
|
||||||
# Created: 2022/01/18 15:11:16 by gbaconni #+# #+# #
|
# Created: 2022/01/18 15:11:16 by gbaconni #+# #+# #
|
||||||
# Updated: 2022/04/26 12:41:34 by gbaconni ### ########.fr #
|
# Updated: 2022/04/26 17:38:06 by gbaconni ### ########.fr #
|
||||||
# #
|
# #
|
||||||
# **************************************************************************** #
|
# **************************************************************************** #
|
||||||
#
|
#
|
||||||
@@ -144,6 +144,9 @@ ft:
|
|||||||
@echo "functions:"
|
@echo "functions:"
|
||||||
@nm $(NAME) | grep T | grep -o 'ft_.*' | sort -u
|
@nm $(NAME) | grep T | grep -o 'ft_.*' | sort -u
|
||||||
|
|
||||||
|
watch:
|
||||||
|
@read -p "cmd: " cmd; while :; do clear; date "+%F %T"; echo; $${cmd} 2>&1 | tail -n 20 || true; sleep 2; done
|
||||||
|
|
||||||
update: sync
|
update: sync
|
||||||
|
|
||||||
sync: online pull
|
sync: online pull
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
/* By: gbaconni@student.42lausanne.ch +#+ +:+ +#+ */
|
/* By: gbaconni@student.42lausanne.ch +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2022/04/26 10:13:59 by gbaconni #+# #+# */
|
/* Created: 2022/04/26 10:13:59 by gbaconni #+# #+# */
|
||||||
/* Updated: 2022/04/26 12:00:16 by gbaconni ### ########.fr */
|
/* Updated: 2022/04/26 13:24:34 by gbaconni ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
/* By: gbaconni@student.42lausanne.ch +#+ +:+ +#+ */
|
/* By: gbaconni@student.42lausanne.ch +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2022/01/20 11:43:52 by gbaconni #+# #+# */
|
/* Created: 2022/01/20 11:43:52 by gbaconni #+# #+# */
|
||||||
/* Updated: 2022/04/26 12:04:14 by gbaconni ### ########.fr */
|
/* Updated: 2022/04/26 15:20:34 by gbaconni ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@@ -15,21 +15,19 @@
|
|||||||
int ft_vprintf(char const *format, va_list ap)
|
int ft_vprintf(char const *format, va_list ap)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
const char *fmt;
|
|
||||||
|
|
||||||
ret = 0;
|
ret = 0;
|
||||||
fmt = format;
|
while (*format != 0)
|
||||||
while (*fmt != 0)
|
|
||||||
{
|
{
|
||||||
if (*fmt == '%')
|
if (*format == '%')
|
||||||
{
|
{
|
||||||
fmt++;
|
format++;
|
||||||
fmt += ft_eoflags(fmt);
|
ret += ft_vprintf_percent(format, ap);
|
||||||
ret += ft_vprintf_percent(fmt, ap);
|
format += ft_eoflags(format);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
ret += ft_vprintf_other(fmt, ap);
|
ret += ft_vprintf_other(format, ap);
|
||||||
fmt++;
|
format++;
|
||||||
}
|
}
|
||||||
return (ret);
|
return (ret);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
/* By: gbaconni@student.42lausanne.ch +#+ +:+ +#+ */
|
/* By: gbaconni@student.42lausanne.ch +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2022/01/20 11:55:02 by gbaconni #+# #+# */
|
/* Created: 2022/01/20 11:55:02 by gbaconni #+# #+# */
|
||||||
/* Updated: 2022/04/16 01:19:09 by gbaconni ### lausanne.ch */
|
/* Updated: 2022/04/26 17:48:37 by gbaconni ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@@ -18,9 +18,11 @@ int ft_vprintf_decimal(const char *format, va_list ap)
|
|||||||
unsigned int u;
|
unsigned int u;
|
||||||
int d;
|
int d;
|
||||||
char *s;
|
char *s;
|
||||||
|
char c;
|
||||||
|
|
||||||
(void) format;
|
ret = 0;
|
||||||
if (*format == 'u')
|
c = *(format + ft_eoflags(format));
|
||||||
|
if (c == 'u')
|
||||||
{
|
{
|
||||||
u = va_arg(ap, unsigned int);
|
u = va_arg(ap, unsigned int);
|
||||||
s = ft_ltoa_base((long) u, "0123456789");
|
s = ft_ltoa_base((long) u, "0123456789");
|
||||||
@@ -30,7 +32,36 @@ int ft_vprintf_decimal(const char *format, va_list ap)
|
|||||||
d = va_arg(ap, int);
|
d = va_arg(ap, int);
|
||||||
s = ft_itoa(d);
|
s = ft_itoa(d);
|
||||||
}
|
}
|
||||||
ret = ft_puts(s);
|
|
||||||
|
const char *f;
|
||||||
|
int flags;
|
||||||
|
int precision;
|
||||||
|
int len;
|
||||||
|
precision = 0;
|
||||||
|
flags = ft_vprintf_flags_bonus(format, ap);
|
||||||
|
f = format;
|
||||||
|
while (*f != '\0')
|
||||||
|
{
|
||||||
|
if (*f >= '0' && *f <= '9')
|
||||||
|
precision = precision * 10 + *f - '0';
|
||||||
|
if (*f == 'c' || *f == 's' || *f == 'p' || *f == 'd' || *f == 'i' || *f == 'u' || *f == 'x' || *f == 'X' || *f == '%')
|
||||||
|
break ;
|
||||||
|
f++;
|
||||||
|
}
|
||||||
|
len = 0;
|
||||||
|
if (precision > 0)
|
||||||
|
{
|
||||||
|
len = precision - ft_strlen(s);
|
||||||
|
while (len --> 0)
|
||||||
|
{
|
||||||
|
if (flags & F_ZERO)
|
||||||
|
ret += ft_putchar('0');
|
||||||
|
else
|
||||||
|
ret += ft_putchar(' ');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ret += ft_puts(s);
|
||||||
free(s);
|
free(s);
|
||||||
return (ret);
|
return (ret);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
/* By: gbaconni@student.42lausanne.ch +#+ +:+ +#+ */
|
/* By: gbaconni@student.42lausanne.ch +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2022/04/25 13:15:32 by gbaconni #+# #+# */
|
/* Created: 2022/04/25 13:15:32 by gbaconni #+# #+# */
|
||||||
/* Updated: 2022/04/25 13:17:47 by gbaconni ### lausanne.ch */
|
/* Updated: 2022/04/26 17:18:20 by gbaconni ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@@ -14,23 +14,29 @@
|
|||||||
|
|
||||||
int ft_vprintf_flags_bonus(const char *format, va_list ap)
|
int ft_vprintf_flags_bonus(const char *format, va_list ap)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
const char *f;
|
||||||
|
|
||||||
ret = 0;
|
ret = 0;
|
||||||
|
f = format;
|
||||||
(void) ap;
|
(void) ap;
|
||||||
while (*format != '\0')
|
while (*f != '\0')
|
||||||
{
|
{
|
||||||
if (*format == '#')
|
if (*f == '#')
|
||||||
ret |= F_HASH;
|
ret |= F_HASH;
|
||||||
else if (*format == '0')
|
else if (*f == '0')
|
||||||
ret |= F_ZERO;
|
ret |= F_ZERO;
|
||||||
else if (*format == '-')
|
else if (*f == '-')
|
||||||
ret |= F_MINUS;
|
ret |= F_MINUS;
|
||||||
else if (*format == ' ')
|
else if (*f == ' ')
|
||||||
ret |= F_SPACE;
|
ret |= F_SPACE;
|
||||||
else if (*format == '+')
|
else if (*f == '+')
|
||||||
ret |= F_PLUS;
|
ret |= F_PLUS;
|
||||||
format++;
|
else if (*f >= '0' && *f <= '9')
|
||||||
|
break ;
|
||||||
|
if (*f == 'c' || *f == 's' || *f == 'p' || *f == 'd' || *f == 'i' || *f == 'u' || *f == 'x' || *f == 'X' || *f == '%')
|
||||||
|
break ;
|
||||||
|
f++;
|
||||||
}
|
}
|
||||||
return (ret);
|
return (ret);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
/* By: gbaconni@student.42lausanne.ch +#+ +:+ +#+ */
|
/* By: gbaconni@student.42lausanne.ch +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2022/01/20 11:55:33 by gbaconni #+# #+# */
|
/* Created: 2022/01/20 11:55:33 by gbaconni #+# #+# */
|
||||||
/* Updated: 2022/04/16 00:30:39 by gbaconni ### lausanne.ch */
|
/* Updated: 2022/04/26 17:33:12 by gbaconni ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@@ -17,14 +17,20 @@ int ft_vprintf_hexadecimal(const char *format, va_list ap)
|
|||||||
int ret;
|
int ret;
|
||||||
long l;
|
long l;
|
||||||
char *s;
|
char *s;
|
||||||
|
char c;
|
||||||
|
int flags;
|
||||||
|
|
||||||
(void) format;
|
ret = 0;
|
||||||
l = va_arg(ap, long);
|
l = va_arg(ap, long);
|
||||||
if (*format == 'x')
|
c = *format;
|
||||||
|
if (c == 'x')
|
||||||
s = ft_ltoa_base(l, "0123456789abcdef");
|
s = ft_ltoa_base(l, "0123456789abcdef");
|
||||||
else
|
else
|
||||||
s = ft_ltoa_base(l, "0123456789ABCDEF");
|
s = ft_ltoa_base(l, "0123456789ABCDEF");
|
||||||
ret = ft_puts(s);
|
flags = ft_vprintf_flags_bonus(format, ap);
|
||||||
|
if (flags & F_HASH)
|
||||||
|
ret += ft_puts("0x");
|
||||||
|
ret += ft_puts(s);
|
||||||
free(s);
|
free(s);
|
||||||
return (ret);
|
return (ret);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
/* By: gbaconni@student.42lausanne.ch +#+ +:+ +#+ */
|
/* By: gbaconni@student.42lausanne.ch +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2022/01/20 11:55:58 by gbaconni #+# #+# */
|
/* Created: 2022/01/20 11:55:58 by gbaconni #+# #+# */
|
||||||
/* Updated: 2022/04/24 01:06:15 by gbaconni ### lausanne.ch */
|
/* Updated: 2022/04/26 15:40:34 by gbaconni ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@@ -14,11 +14,11 @@
|
|||||||
|
|
||||||
int ft_vprintf_percent(const char *format, va_list ap)
|
int ft_vprintf_percent(const char *format, va_list ap)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
char c;
|
char c;
|
||||||
|
|
||||||
ret = 0;
|
ret = 0;
|
||||||
c = *format;
|
c = *(format + ft_eoflags(format));
|
||||||
if (c == 'c')
|
if (c == 'c')
|
||||||
ret = ft_vprintf_char(format, ap);
|
ret = ft_vprintf_char(format, ap);
|
||||||
else if (c == 's')
|
else if (c == 's')
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
/* By: gbaconni@student.42lausanne.ch +#+ +:+ +#+ */
|
/* By: gbaconni@student.42lausanne.ch +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2022/01/20 11:56:16 by gbaconni #+# #+# */
|
/* Created: 2022/01/20 11:56:16 by gbaconni #+# #+# */
|
||||||
/* Updated: 2022/04/16 00:34:18 by gbaconni ### lausanne.ch */
|
/* Updated: 2022/04/26 13:53:06 by gbaconni ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
/* By: gbaconni@student.42lausanne.ch +#+ +:+ +#+ */
|
/* By: gbaconni@student.42lausanne.ch +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2022/01/20 11:56:37 by gbaconni #+# #+# */
|
/* Created: 2022/01/20 11:56:37 by gbaconni #+# #+# */
|
||||||
/* Updated: 2022/04/25 07:12:44 by gbaconni ### lausanne.ch */
|
/* Updated: 2022/04/26 17:43:42 by gbaconni ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@@ -14,8 +14,8 @@
|
|||||||
|
|
||||||
int ft_vprintf_string(const char *format, va_list ap)
|
int ft_vprintf_string(const char *format, va_list ap)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
char *s;
|
char *s;
|
||||||
|
|
||||||
(void) format;
|
(void) format;
|
||||||
ret = 0;
|
ret = 0;
|
||||||
@@ -25,6 +25,28 @@ int ft_vprintf_string(const char *format, va_list ap)
|
|||||||
ret = ft_puts("(null)");
|
ret = ft_puts("(null)");
|
||||||
return (ret);
|
return (ret);
|
||||||
}
|
}
|
||||||
ret = ft_puts(s);
|
|
||||||
|
const char *f;
|
||||||
|
int flags;
|
||||||
|
int precision;
|
||||||
|
int len;
|
||||||
|
precision = 0;
|
||||||
|
flags = 0;
|
||||||
|
f = format;
|
||||||
|
while (*f != '\0')
|
||||||
|
{
|
||||||
|
if (*f >= '0' && *f <= '9')
|
||||||
|
precision = precision * 10 + *f - '0';
|
||||||
|
if (*f == 'c' || *f == 's' || *f == 'p' || *f == 'd' || *f == 'i' || *f == 'u' || *f == 'x' || *f == 'X' || *f == '%')
|
||||||
|
break ;
|
||||||
|
f++;
|
||||||
|
}
|
||||||
|
if (precision > 0)
|
||||||
|
{
|
||||||
|
len = precision - ft_strlen(s);
|
||||||
|
while (len --> 0)
|
||||||
|
ret += ft_putchar(' ');
|
||||||
|
}
|
||||||
|
ret += ft_puts(s);
|
||||||
return (ret);
|
return (ret);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user