c의 간단하면서도 가장 보편적으로 사용되는 국밥 같은 존재 'printf'를 구현하는 과제를 했습니다

단순 구현은 금방 끝났지만 보너스 노려보겠다고 무려 3주나 뇌절했습니다...

파싱이라는 경험이 처음이라 재미있었습니다

단순 구현 부분은 간단합니다

주어진 문자열을 차례대로 읽어나가며 하나씩 출력하다가 format string에 따라서 가변 인자를 읽어오고 출력하는 것입니다

format string이란 이 다음에 출력되어야 하는게 어떤 데이터타입인지 표시하는것과같은데요

printf format string - Wikipedia

이곳에 표로 잘 정리되어있어서 참고했습니다

이 과제에서는 가변 인자에 대한 개념이 필요합니다

가변 인자라 함은 함수에 주어지는 인자에서 고정되는 부분이 아니라 얼마든지 개수가 변할 수 있는 부분을 말합니다

그리고 이를 다룰 수 있는 매크로들이 들어있는 헤더 <strdarg.h>가 있습니다

va_list

가변 인자를 담고 있을 수 있는 구조체입니다, 이 구조체에 매크로를 사용함으로써 포인터 연산을 하고 그 연산을 토대로 가변 인자를 사용합니다