[ft_printf] ft_printf란?

J_JEON·2022년 2월 23일
0

ft_printf

목록 보기
1/5

stdio.h 에 포함되어있는 libc의 printf 함수를 구현합니다, 단 실제 printf 처럼 버퍼관리를 수행하지 않습니다

ft_printf의 프로토타입

int ft_printf(const char *str, ...);
  • 이때 ...은 가변인자를 의미하며 stdarg.h에 포함된 매크로를 사용해야 합니다.
  • 가변인자란 printf, scanf처럼 함수에 들어가는 인자의 갯수가 정해져있지않아 매번 변하는것입니다.
  • 가변인자를 정의할 때에는 고정 매개변수가 1개이상 꼭 있어야하며 ... 은 파라미터 순서상 가장 마지막에 있어야합니다.

stdarg.h의 매크로

  • va_list = 가변할 수 있는 인자들을 저장할 저장공간으로 사용하는 타입
  • va_start(va_list, 고정 매개변수) = 앞에서 선언한 va_list를 초기화함, 이때 초기화를위해 고정인수가 필요한데 이는 첫번째 가변인자의 주소를 알기위함임
  • va_arg(va_list, type) = va_list에 있는 주소의 값을 type 크기만큼 받아옴
  • va_end(va_list) = va_list의 값을 NULL로 초기화해줌

구현할 서식지정자

%c - 단일문자를 한개 출력
%s - 문자열을 출력
%p - void*형식의 포인터 인자를 16진수로 출력
%d - 10진수 숫자를 출력
%i - 10진수 정수를 출력
%u - 부호없는 10진수 숫자를 출력
%x - 소문자를 사용한 16진수 숫자 출력
%X - 대문자를 사용한 16진수 숫자 출력
%% - 퍼센트 기호를 출력

profile
늅늅

0개의 댓글