mirror of
https://github.com/DavidGailleton/42-ft_printf.git
synced 2026-11-01 11:42:03 +01:00
Mandatory finished
This commit is contained in:
1 parent
506d90d9c1
commit
dabbfa7a35
73 files changed
+238
-11
No files matched your search
@@ -5,6 +5,13 @@ INC_DIR= include
|
||||
LIBFT_DIR= libft
|
||||
|
||||
SRC= $(SRC_DIR)/ft_printf.c \
|
||||
$(SRC_DIR)/ft_putnbr_base.c \
|
||||
$(SRC_DIR)/print_char.c \
|
||||
$(SRC_DIR)/print_hex.c \
|
||||
$(SRC_DIR)/print_number.c \
|
||||
$(SRC_DIR)/print_pointer.c \
|
||||
$(SRC_DIR)/print_str.c \
|
||||
$(SRC_DIR)/print_unsigned.c \
|
||||
|
||||
OBJ= $(SRC:.c=.o)
|
||||
DEP= $(SRC:.c=.d)
|
||||
@@ -16,20 +23,20 @@ AR= ar rcs
|
||||
all: $(NAME)
|
||||
|
||||
$(NAME): $(OBJ)
|
||||
@$(MAKE) -C $(LIBFT_DIR)
|
||||
@cp $(LIBFT_DIR)/libft.a $(NAME)
|
||||
@$(AR) $(NAME) $(OBJ)
|
||||
$(MAKE) -C $(LIBFT_DIR)
|
||||
cp $(LIBFT_DIR)/libft.a $(NAME)
|
||||
$(AR) $(NAME) $(OBJ)
|
||||
|
||||
%.o: %.c
|
||||
$(CC) $(CFLAGS) -c $< -o $@
|
||||
|
||||
clean:
|
||||
@rm -f $(OBJ) $(DEP)
|
||||
@$(MAKE) -C $(LIBFT_DIR) clean
|
||||
rm -f $(OBJ) $(DEP)
|
||||
$(MAKE) -C $(LIBFT_DIR) clean
|
||||
|
||||
fclean: clean
|
||||
@rm -f $(NAME)
|
||||
@$(MAKE) -C $(LIBFT_DIR) fclean
|
||||
rm -f $(NAME)
|
||||
$(MAKE) -C $(LIBFT_DIR) fclean
|
||||
|
||||
re: fclean all
|
||||
|
||||
|
||||
+10
-1
@@ -6,7 +6,7 @@
|
||||
/* By: dgaillet <dgaillet@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2025/11/17 10:52:23 by dgaillet #+# #+# */
|
||||
/* Updated: 2025/11/17 11:25:46 by dgaillet ### ########lyon.fr */
|
||||
/* Updated: 2025/11/17 12:34:18 by dgaillet ### ########lyon.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
@@ -15,4 +15,13 @@
|
||||
|
||||
int ft_printf(const char *first_arg, ...);
|
||||
|
||||
int ft_putnbr_base(unsigned long long nbr, char *base, int base_size);
|
||||
|
||||
int print_char(char c);
|
||||
int print_str(char *str);
|
||||
int print_pointer(unsigned long long p);
|
||||
int print_number(int nbr);
|
||||
int print_unsigned(unsigned int nbr);
|
||||
int print_hex(unsigned long long p, int upper);
|
||||
|
||||
#endif
|
||||
File renamed without changes.
@@ -71,7 +71,7 @@ ALL_DEP= $(DEP) $(BONUS_DEP)
|
||||
|
||||
|
||||
%.o: %.c
|
||||
$(CC) -MMD -MP -o $@ -c $< $(CFLAGS) -I$(HEADER)
|
||||
$(CC) -MMD -MP -o $@ -c $< $(CFLAGS) -I.
|
||||
|
||||
all: $(NAME)
|
||||
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Binary file not shown.
+43
-2
@@ -6,13 +6,54 @@
|
||||
/* By: dgaillet <dgaillet@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2025/11/17 10:54:03 by dgaillet #+# #+# */
|
||||
/* Updated: 2025/11/17 11:26:09 by dgaillet ### ########lyon.fr */
|
||||
/* Updated: 2025/11/17 12:35:20 by dgaillet ### ########lyon.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include <stdarg.h>
|
||||
#include <unistd.h>
|
||||
#include "../include/ft_printf.h"
|
||||
|
||||
static int ft_print_arg(char c, va_list args)
|
||||
{
|
||||
if (c == 'c')
|
||||
return (print_char(va_arg(args, int)));
|
||||
else if (c == 's')
|
||||
return (print_str(va_arg(args, char *)));
|
||||
else if (c == 'p')
|
||||
return (print_pointer(va_arg(args, unsigned long long)));
|
||||
else if (c == 'd' || c == 'i')
|
||||
return (print_number(va_arg(args, int)));
|
||||
else if (c == 'u')
|
||||
return (print_unsigned(va_arg(args, unsigned int)));
|
||||
else if (c == 'x')
|
||||
return (print_hex(va_arg(args, unsigned int), 0));
|
||||
else if (c == 'X')
|
||||
return (print_hex(va_arg(args, unsigned int), 1));
|
||||
else if (c == '%')
|
||||
return (print_char('%'));
|
||||
return (0);
|
||||
}
|
||||
|
||||
int ft_printf(const char *first_arg, ...)
|
||||
{
|
||||
return (1);
|
||||
va_list args;
|
||||
int nb_print;
|
||||
int i;
|
||||
|
||||
nb_print = 0;
|
||||
va_start(args, first_arg);
|
||||
i = 0;
|
||||
while (first_arg[i])
|
||||
{
|
||||
if (first_arg[i] == '%')
|
||||
{
|
||||
i++;
|
||||
nb_print += ft_print_arg(first_arg[i], args);
|
||||
}
|
||||
else
|
||||
nb_print += write(1, &first_arg[i], 1);
|
||||
i++;
|
||||
}
|
||||
return (nb_print);
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
src/ft_printf.o: src/ft_printf.c src/../include/ft_printf.h
|
||||
src/../include/ft_printf.h:
|
||||
Binary file not shown.
@@ -0,0 +1,24 @@
|
||||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* ::: :::::::: */
|
||||
/* ft_putnbr_base.c :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: dgaillet <dgaillet@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2025/11/17 12:16:44 by dgaillet #+# #+# */
|
||||
/* Updated: 2025/11/17 12:17:14 by dgaillet ### ########lyon.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "../libft/libft.h"
|
||||
|
||||
int ft_putnbr_base(unsigned long long nbr, char *base, int base_size)
|
||||
{
|
||||
int i;
|
||||
|
||||
if (nbr == 0)
|
||||
return (0);
|
||||
i = 1 + ft_putnbr_base(nbr / base_size, base, base_size);
|
||||
ft_putchar_fd(base[nbr % base_size], 1);
|
||||
return (i);
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
src/ft_putnbr_base.o: src/ft_putnbr_base.c src/../libft/libft.h
|
||||
src/../libft/libft.h:
|
||||
Binary file not shown.
@@ -0,0 +1,18 @@
|
||||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* ::: :::::::: */
|
||||
/* print_char.c :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: dgaillet <dgaillet@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2025/11/17 11:56:36 by dgaillet #+# #+# */
|
||||
/* Updated: 2025/11/17 12:01:47 by dgaillet ### ########lyon.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include <unistd.h>
|
||||
|
||||
int print_char(char c)
|
||||
{
|
||||
return (write(1, &c, 1));
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
src/print_char.o: src/print_char.c
|
||||
Binary file not shown.
@@ -0,0 +1,25 @@
|
||||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* ::: :::::::: */
|
||||
/* print_hex.c :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: dgaillet <dgaillet@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2025/11/17 12:06:35 by dgaillet #+# #+# */
|
||||
/* Updated: 2025/11/17 12:38:35 by dgaillet ### ########lyon.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "../include/ft_printf.h"
|
||||
#include <unistd.h>
|
||||
|
||||
int print_hex(unsigned long long nbr, int upper)
|
||||
{
|
||||
if (nbr == 0)
|
||||
return (write(1, "0", 1));
|
||||
if (upper)
|
||||
return (ft_putnbr_base(nbr, "0123456789ABCDEF", 16));
|
||||
else
|
||||
return (ft_putnbr_base(nbr, "0123456789abcdef", 16));
|
||||
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
src/print_hex.o: src/print_hex.c src/../include/ft_printf.h
|
||||
src/../include/ft_printf.h:
|
||||
Binary file not shown.
@@ -0,0 +1,26 @@
|
||||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* ::: :::::::: */
|
||||
/* print_number.c :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: dgaillet <dgaillet@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2025/11/17 12:26:23 by dgaillet #+# #+# */
|
||||
/* Updated: 2025/11/17 12:31:22 by dgaillet ### ########lyon.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "../include/ft_printf.h"
|
||||
#include <unistd.h>
|
||||
|
||||
int print_number(int nbr)
|
||||
{
|
||||
if (nbr == 0)
|
||||
return (write(1, "0", 1));
|
||||
if (nbr < 0)
|
||||
{
|
||||
write(1, "-", 1);
|
||||
return (1 + ft_putnbr_base(nbr * -1, "0123456789", 10));
|
||||
}
|
||||
return (ft_putnbr_base(nbr, "0123456789", 10));
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
src/print_number.o: src/print_number.c src/../include/ft_printf.h
|
||||
src/../include/ft_printf.h:
|
||||
Binary file not shown.
@@ -0,0 +1,20 @@
|
||||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* ::: :::::::: */
|
||||
/* print_pointer.c :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: dgaillet <dgaillet@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2025/11/17 12:19:16 by dgaillet #+# #+# */
|
||||
/* Updated: 2025/11/17 12:25:20 by dgaillet ### ########lyon.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "../libft/libft.h"
|
||||
#include "../include/ft_printf.h"
|
||||
|
||||
int print_pointer(unsigned long long p)
|
||||
{
|
||||
ft_putstr_fd("0x", 1);
|
||||
return (2 + ft_putnbr_base(p, "0123456789abcdef", 16));
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
src/print_pointer.o: src/print_pointer.c src/../libft/libft.h \
|
||||
src/../include/ft_printf.h
|
||||
src/../libft/libft.h:
|
||||
src/../include/ft_printf.h:
|
||||
Binary file not shown.
@@ -0,0 +1,19 @@
|
||||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* ::: :::::::: */
|
||||
/* print_str.c :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: dgaillet <dgaillet@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2025/11/17 12:02:03 by dgaillet #+# #+# */
|
||||
/* Updated: 2025/11/17 12:03:27 by dgaillet ### ########lyon.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "../libft/libft.h"
|
||||
|
||||
int print_str(char *str)
|
||||
{
|
||||
ft_putstr_fd(str, 1);
|
||||
return (ft_strlen(str));
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
src/print_str.o: src/print_str.c src/../libft/libft.h
|
||||
src/../libft/libft.h:
|
||||
Binary file not shown.
@@ -0,0 +1,21 @@
|
||||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* ::: :::::::: */
|
||||
/* print_unsigned.c :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: dgaillet <dgaillet@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2025/11/17 12:26:23 by dgaillet #+# #+# */
|
||||
/* Updated: 2025/11/17 12:34:00 by dgaillet ### ########lyon.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "../include/ft_printf.h"
|
||||
#include <unistd.h>
|
||||
|
||||
int print_unsigned(unsigned int nbr)
|
||||
{
|
||||
if (nbr == 0)
|
||||
return (write(1, "0", 1));
|
||||
return (ft_putnbr_base(nbr, "0123456789", 10));
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
src/print_unsigned.o: src/print_unsigned.c src/../include/ft_printf.h
|
||||
src/../include/ft_printf.h:
|
||||
Binary file not shown.
Reference in new issue
Block a user