/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* ft_pointer.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: aortigos +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/04/09 16:52:06 by aortigos #+# #+# */ /* Updated: 2024/04/12 19:21:35 by aortigos ### ########.fr */ /* */ /* ************************************************************************** */ #include "ft_printf.h" static int ft_length_pointer(unsigned long long ptr); static void ft_search_pointer(unsigned long long ptr); int ft_print_pointer(unsigned long long ptr) { int size; size = 0; size += ft_print_str("0x"); if (ptr == 0) size += ft_print_char('0'); else { ft_search_pointer(ptr); size += ft_length_pointer(ptr); } return (size); } static int ft_length_pointer(unsigned long long ptr) { int len; len = 0; while (ptr > 0) { len++; ptr /= 16; } return (len); } static void ft_search_pointer(unsigned long long ptr) { if (ptr >= 16) { ft_search_pointer(ptr / 16); ft_search_pointer(ptr % 16); } else { if (ptr < 10) ft_print_char(ptr + '0'); else ft_print_char(ptr - 10 + 'a'); } }