stdio.h 에 포함되어있는 libc의 printf 함수를 구현합니다, 단 실제 printf 처럼 버퍼관리를 수행하지 않습니다
int ft_printf(const char *str, ...);
- 이때
...
은 가변인자를 의미하며stdarg.h
에 포함된 매크로를 사용해야 합니다.- 가변인자란 printf, scanf처럼 함수에 들어가는 인자의 갯수가 정해져있지않아 매번 변하는것입니다.
- 가변인자를 정의할 때에는 고정 매개변수가 1개이상 꼭 있어야하며
...
은 파라미터 순서상 가장 마지막에 있어야합니다.
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진수 숫자 출력
%%
- 퍼센트 기호를 출력