Main Function

int ft_printf(const char *foramt, ...)
{
	va_list ap;
	int p_len;

	va_start(ap, format)
	가변인자의 길이를 계산하고, 한 변수(p_len)에 저장함
	va_end(ap)
	if p_len이 -1이면 return (-1)
	return (p_len)
}
  1. 처음에 va_list(typedef char *) 타입의 포인터 변수(→ap)를 생성해 줍니다.
  2. va_start 함수를 통해 ap가 가변 인자 첫 번째 주소를 가리키도록 해줍니다.
  3. core 부분 함수가 들어갈 예정인데, printf로 출력되는 총 길이를 p_len 변수에 받습니다.
  4. va_end 함수를 통해 ap 포인터를 NULL로 다시 설정해 줍니다.
  5. p_len의 길이가 -1이면 에러가 발생한 것이므로 return (-1)을 해줍니다.
  6. 위 작업들이 끝난 경우 p_len을 리턴해 줍니다.

Core Function

static int		ft_printf_core(const char *format, va_list ap)
{
	while(널('\\0') 만날때 까지)
	{
		if '%'를 만나면
		{
			while (널('\\0') 만날때 까지 && !istype()) //istype : 타입인지 체크
			{
				format_parsing()
				rd_size += tycheck()
			}
		else // 안 만나면
				한 글자 출력 !
				rd_size += 1;
		}
	}
}