Files
ft_printf/ft_pointer.c
Angel Ortigosa Perez c94cc31760 ft_printf
2025-11-15 10:24:15 +01:00

63 lines
1.6 KiB
C

/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_pointer.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: aortigos <aortigos@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* 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');
}
}