type %,c,s는 처리가 그렇게 어렵지 않아, 넘어가도록 한다.
p옵션은 들어온 포인터 변수의 주소를 16진수로 변환시켜 보여주는 타입이다. 이를 처리하기 위해 매개변수로 받은 가변인자를 long long자료형으로 변환시켜 사용한다. 사실상 방법은 그렇게 어렵지 않다. 기존에 정수형 10진수를 16진수로 변형시키는 x옵션이 있는데, 자료형만 바꿔 그 똑같이 문자열을 처리해주면 된다.
int ft_print_type_pointer(t_format *t_form, va_list *va)
{
char *str;
long long p;
int i;
i = 0;
ft_putstr_fd("0x",1);//앞에 기본적으로 붙는 문자
str = ft_lltoh((long long)va_arg(*va, long long));
while (i < 12)
{
ft_putchar_fd(str[i],1);
i++;
}
free(str);
return (14);//%p가 리턴하는 문자열은 0x + 12개의 16진수로 항상 14개이다.
}