From 46ae7b66941a20952cadeba3ff8cd206dba0f4af Mon Sep 17 00:00:00 2001 From: Tanguy MAZE Date: Sat, 5 May 2018 19:46:25 +0200 Subject: [PATCH] Init commit --- Makefile | 40 +++++++++++++++ convert_d_i.c | 84 +++++++++++++++++++++++++++++++ ft_printf.c | 81 ++++++++++++++++++++++++++++++ libft.a | Bin 0 -> 68936 bytes libft.h | 133 ++++++++++++++++++++++++++++++++++++++++++++++++++ libftprintf.h | 25 ++++++++++ main.c | 28 +++++++++++ 7 files changed, 391 insertions(+) create mode 100644 Makefile create mode 100644 convert_d_i.c create mode 100644 ft_printf.c create mode 100644 libft.a create mode 100644 libft.h create mode 100644 libftprintf.h create mode 100644 main.c diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..952a898 --- /dev/null +++ b/Makefile @@ -0,0 +1,40 @@ +#******************************************************************************# +# # +# ::: :::::::: # +# Makefile :+: :+: :+: # +# +:+ +:+ +:+ # +# By: tmaze +#+ +:+ +#+ # +# +#+#+#+#+#+ +#+ # +# Created: 2018/05/05 19:22:36 by tmaze #+# #+# # +# Updated: 2018/05/05 19:39:15 by tmaze ### ########.fr # +# # +#******************************************************************************# + +CC = gcc +CCFLAGS = -Wall -Werror -Wextra +CCSTD = + +NAME = libftprintf + +SRCS = convert_d_i.c ft_printf.c main.c +OBJS = $(SRCS:.c=.o) +INCLS = -I. +LIBS = -L. -lft + +.PHONY = all clean fclean re + +all: $(NAME) + +$(NAME): $(OBJS) + $(CC) $(CCFLAGS) $(CCSTD) $(INCLS) $^ -o $@ $(LIBS) + +%.o: %.c libftprintf.h + $(CC) $(CCFLAGS) $(CCSTD) $(INCLS) -c $< -o $@ + +clean: + rm -f $(OBJS) + +fclean: clean + rm -f $(NAME) + +re: fclean all diff --git a/convert_d_i.c b/convert_d_i.c new file mode 100644 index 0000000..b11c4c3 --- /dev/null +++ b/convert_d_i.c @@ -0,0 +1,84 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* convert_d_i.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: tmaze +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2018/05/05 19:17:53 by tmaze #+# #+# */ +/* Updated: 2018/05/05 19:40:49 by tmaze ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libftprintf.h" + +char *apply_precision_d(char *s, int prec) +{ + char *ret; + char *tmp; + int nb_fill; + + nb_fill = prec - ft_strlen(s); + if ((ret = ft_strsub(s, 0, prec)) == NULL) + return (NULL); + ft_strdel(&s); + if (nb_fill > 0 && (s = ft_strnew(nb_fill)) != NULL) + { + ft_memset(s, '0', nb_fill); + tmp = ft_strjoin(s, ret); + ft_strdel(&s); + ft_strdel(&ret); + ret = tmp; + tmp = NULL; + } + ft_strdel(&tmp); + return (ret); +} + +char *apply_width_d(char *s, int width, char align) +{ + char *add; + char *tmp; + + if ((add = ft_strnew(width - ft_strlen(s))) == NULL) + return (NULL); + ft_memset(add, ' ', width - ft_strlen(s)); + if (align == '-') + { + tmp = add; + add = s; + s = tmp; + } + tmp = ft_strjoin(add, s); + ft_strdel(&add); + ft_strdel(&s); + return (tmp); +} + +char *convert_d_i(char *flags, int *dim, int nb) +{ + char *ret; + char *tmp; + char *atoi; + int atoi_len; + + atoi = ft_itoa(ft_abs(nb)); + atoi_len = ft_strlen(atoi); + if (dim[1] > atoi_len) + tmp = apply_precision_d(atoi, dim[1]); + else + tmp = atoi; + atoi = ft_strnew((((flags[1] == '+' || flags[1] == ' ') && nb >= 0) || nb < 0) ? 1 : 0); + if (flags[1] == '+' && nb >= 0) + atoi[0] = '+'; + else if (flags[1] == ' ' && nb >= 0) + atoi[0] = ' '; + else if (nb <= 0) + atoi[0] = '-'; + ret = ft_strjoin(atoi, tmp); + ft_strdel(&atoi); + ft_strdel(&tmp); + if ((size_t)dim[0] > ft_strlen(ret)) + ret = apply_width_d(ret, dim[0], flags[0]); + return (ret); +} diff --git a/ft_printf.c b/ft_printf.c new file mode 100644 index 0000000..d74d963 --- /dev/null +++ b/ft_printf.c @@ -0,0 +1,81 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_printf.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: tmaze +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2018/05/05 19:36:58 by tmaze #+# #+# */ +/* Updated: 2018/05/05 19:38:02 by tmaze ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libftprintf.h" + +int is_flag(char c) +{ + return (c == '#' || c == '0' || c == '-' || c == '+' || c == ' '); +} + +int ft_printf(const char *format, ...) +{ + va_list ap; + int i; + char *ret; + char flags[4]; + int dim[2]; + + i = 0; + ret = ft_strnew(0); + va_start(ap, format); + while (format[i]) + { + if (format[i] == '%') + { + dim[0] = 0; + while (dim[0] < 4) + flags[dim[0]++] = 0; + dim[0] = 0; + dim[1] = 0; + i++; + while (is_flag(format[i])) + { + if (format[i] == '-') + { + flags[0] = '-'; + flags[2] = 0; + } + else if (format[i] == '+') + flags[1] = '+'; + else if (format[i] == ' ' && flags[1] == 0) + flags[1] = ' '; + else if (format[i] == '0' && flags[0] == 0) + flags[2] = '0'; + else + flags[3] = '#'; + i++; + } + dim[0] = ft_atoi(&format[i]); + while (ft_isdigit(format[i])) + i++; + if (format[i] == '.') + { + i++; + dim[1] = ft_atoi(&format[i]); + } + while (ft_isdigit(format[i])) + i++; + if (format[i] == '%') + write(1, "%", 1); + else if (format[i] == 'd' || format[i] == 'i') + ret = convert_d_i(flags, dim, va_arg(ap, int)); + write(1, ret, ft_strlen(ret)); + } + else + write(1, &format[i], 1); + i++; + } + ft_strdel(&ret); + va_end(ap); + return (0); +} diff --git a/libft.a b/libft.a new file mode 100644 index 0000000000000000000000000000000000000000..7a3b72a540f426a270036d83a4dad9ca41f9a927 GIT binary patch literal 68936 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 L!*fC5IG+0dL5qTJ literal 0 HcmV?d00001 diff --git a/libft.h b/libft.h new file mode 100644 index 0000000..cd45e39 --- /dev/null +++ b/libft.h @@ -0,0 +1,133 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* libft.h :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: tmaze +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2018/04/08 00:12:36 by tmaze #+# #+# */ +/* Updated: 2018/05/05 16:49:16 by tmaze ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef LIBFT_H +# define LIBFT_H + +# include +# include +# include + +/* +** définition type t_list +*/ + +typedef struct s_list +{ + void *content; + size_t content_size; + struct s_list *next; +} t_list; + +/* +** fonctions obligatoires +*/ + +void *ft_memset(void *b, int c, size_t len); +void ft_bzero(void *s, size_t n); +void *ft_memcpy(void *dest, const void *src,\ + size_t n); +void *ft_memccpy(void *dest, const void *src,\ + int c, size_t n); +void *ft_memmove(void *dest, const void *src, size_t len); +void *ft_memchr(const void *s, int c, size_t n); +int ft_memcmp(const void *s1, const void *s2, size_t n); +size_t ft_strlen(const char *s); +char *ft_strdup(const char *s); +char *ft_strcpy(char *dest, const char *src); +char *ft_strncpy(char *dest, const char *src, size_t n); +char *ft_strcat(char *dest, const char *src); +char *ft_strncat(char *dest, const char *src,\ + size_t n); +size_t ft_strlcat(char *dst, const char *src, size_t size); +char *ft_strchr(const char *s, int c); +char *ft_strrchr(const char *s, int c); +char *ft_strstr(const char *haystack, const char *needle); +char *ft_strnstr(const char *haystack, const char *needle,\ + size_t len); +int ft_strcmp(const char *s1, const char *s2); +int ft_strncmp(const char *s1, const char *s2, size_t n); +int ft_atoi(const char *str); +int ft_isalpha(int c); +int ft_isdigit(int c); +int ft_isalnum(int c); +int ft_isascii(int c); +int ft_isprint(int c); +int ft_toupper(int c); +int ft_tolower(int c); + +/* +** fonctions supplémentaires +*/ + +void *ft_memalloc(size_t size); +void ft_memdel(void **ap); +char *ft_strnew(size_t size); +void ft_strdel(char **as); +void ft_strclr(char *s); +void ft_striter(char *s, void (*f)(char *)); +void ft_striteri(char *s, void (*f)(unsigned int, char *)); +char *ft_strmap(char const *s, char (*f)(char)); +char *ft_strmapi(char const *s, char (*f)(unsigned int, char)); +int ft_strequ(char const *s1, char const *s2); +int ft_strnequ(char const *s1, char const *s2, size_t n); +char *ft_strsub(char const *s, unsigned int start, size_t len); +char *ft_strjoin(char const *s1, char const *s2); +char *ft_strtrim(char const *s); +char **ft_strsplit(char const *s, char c); +char *ft_itoa(int n); +void ft_putchar(char c); +void ft_putstr(char const *s); +void ft_putendl(char const *s); +void ft_putnbr(int n); +void ft_putchar_fd(char c, int fd); +void ft_putstr_fd(char const *s, int fd); +void ft_putendl_fd(char const *s, int fd); +void ft_putnbr_fd(int n, int fd); + +/* +** fonctions bonus +*/ + +t_list *ft_lstnew(void const *content, size_t content_size); +void ft_lstdelone(t_list **alst, void (*del)(void *, size_t)); +void ft_lstdel(t_list **alst, void (*del)(void *, size_t)); +void ft_lstadd(t_list **alst, t_list *new); +void ft_lstiter(t_list *lst, void (*f)(t_list *elem)); +t_list *ft_lstmap(t_list *lst, t_list *(*f)(t_list *elem)); + +/* +** fonctions additionneles +*/ + +int ft_isupper(int c); +int ft_islower(int c); +int ft_str_is_alpha(char *str); +int ft_str_is_lowercase(char *str); +int ft_str_is_numeric(char *str); +int ft_str_is_printable(char *str); +int ft_str_is_uppercase(char *str); +char *ft_strlowcase(char *s); +char *ft_strupcase(char *s); +char *ft_strcapitalize(char *str); +size_t ft_strlcpy(char *dst, const char *src,\ + size_t size); +size_t ft_lstsize(t_list *lst); +t_list *ft_lstgetat(t_list *lst, size_t ind); +t_list *ft_lstgetlast(t_list *lst); +void ft_sort_params(int ac, char **av); +void ft_print_words_tables(char **tab); +t_list *ft_lstaddend(t_list **alst, t_list *new); +char *ft_strndup(const char *s1, size_t n); +unsigned int ft_abs(int nb); + +#endif diff --git a/libftprintf.h b/libftprintf.h new file mode 100644 index 0000000..73dd335 --- /dev/null +++ b/libftprintf.h @@ -0,0 +1,25 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* libftprintf.h :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: tmaze +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2018/05/05 19:19:33 by tmaze #+# #+# */ +/* Updated: 2018/05/05 19:40:06 by tmaze ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef LIBFTPRINTF_H +# define LIBFTPRINTF_H + +# include "libft.h" +# include +# include +# include +# include + +int ft_printf(const char *format, ...); +char *convert_d_i(char *flags, int *dim, int nb); + +#endif diff --git a/main.c b/main.c new file mode 100644 index 0000000..ad3dec1 --- /dev/null +++ b/main.c @@ -0,0 +1,28 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* printf.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: tmaze +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2018/05/01 15:01:57 by tmaze #+# #+# */ +/* Updated: 2018/05/05 19:37:56 by tmaze ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include + +#include "libftprintf.h" + +char happy[] = { 0xe2, 0x98, 0xba }; /* U+263A */ +wchar_t Whappy[] = { 0xe2, 0x98, 0xba }; /* U+263A */ + +int main(void) +{ + write(1, happy, 3); + write(1, "\n", 1); + printf("plop %++0 #%plap \"%+-20.10i\"\n", 15); +// printf("%lu %#% %S \"% -10.8d\" \"%-10.8s\"\n", sizeof(wchar_t), Whappy, -1475, "Je suis"); + ft_printf("plop %++0 #%plap \"%+-20.10i\"\n", 15); + return (0); +}