ft_printf

가변 인자

C 라이브러리의 printfVA_ARG를 활용하여 직접 구현하는 과제이다. 지원하는 타입, 플래그, 정밀도의 종류는 실제 printf보다 제한되어 있다.


개요

printf는 포맷 문자열을 받아 그 안의 형식 지정자(%d, %s 등)를 실제 인자 값으로 치환하여 출력하는 함수이다. 인자의 개수와 타입이 호출마다 달라지므로, 이를 처리하기 위해 가변 인자(variadic arguments) 메커니즘(stdarg.h)을 사용한다.

/42_innercircle_course/ft_printf/ 경로의 tester.c 파일을 참조하여 tester 파일을 실행하면 ft_printf의 동작을 확인할 수 있다.


구현 내용

형식 지정자 파싱 및 출력
포맷 문자열을 순회하며 %를 만나면 이후 문자를 해석하여 해당 타입에 맞는 출력 경로로 분기한다. 아래 형식 지정자를 지원한다.

지정자출력
%c단일 문자
%s문자열
%p포인터 주소 (16진수)
%d, %i10진수 정수
%u부호 없는 10진수 정수
%x16진수 정수 (소문자)
%X16진수 정수 (대문자)
%%% 문자 자체 출력

출력 길이 반환
printf와 동일하게 출력한 문자 수를 반환한다.

보너스: 플래그/너비/정밀도 확장
아래 플래그와 옵션을 모두 구현하였다.

옵션동작
-출력을 필드 너비 내에서 왼쪽 정렬
0빈 자리를 공백 대신 0으로 채움
.정밀도 지정 (문자열의 최대 출력 길이, 숫자의 최소 자릿수)
*너비 또는 정밀도를 인자에서 읽음
+양수에도 + 부호를 출력
양수 앞에 공백 출력
#%x, %X0x, 0X 접두사 추가