8.3.4 서식 지정 출력
printf로 서식 지정 출력(formatted output)을 하는 방법에 대해서는 앞에서 소개한 적이 있다. fprintf 함수는 printf와 거의 비슷하지만 출력을 쓸 스트림을 지정하는 매개변수가 하나 더 있다.
int printf(char const format[static 1], ...); int fprintf(FILE* stream, char const format[static 1], ...);
여기서 점 세 개(...)로 표기한 부분은 함수에서 받을 수 있는 인수, 즉 출력 항목의 수가 달라질 수 있다는 것을 의미한다. 이때 주의할 점은 이 인수의 개수는 정확히 '%' 지정자를 사용하는 항목의 개수와 일치해야 한다는 것이다. 그렇지 않으면 어떻게 실행될지 알 수 없다.
TAKEAWAY 8.14 printf의 매개변수와 서식 지정자가 정확히 대응돼야 한다.
%[FF][WW][.PP][LL]SS 구문으로 정의하는 서식 지정 형식을 보면 크게 다섯 부분, 즉 플래그(flag), 폭(width), 정밀도(precision), 수정자(modifier), 지정자(specifier)로 구성되는 것을 알 수 있다. 자세한 내용은 표 8-6을 참조한다.
지정자(specifier)는 옵션이 아니며, 실행 시 적용할 출력 변환 타입을 지정한다. 표 8-7은 모든 지정자를 간략히 정리한 것이다.
이 표를 보면 거의 모든 값 타입에 대해 서식이 제공되는 사실을 알 수 있다. 그 중에서 출력에 담길 값의 뜻에 가장 적합한 것을 골라야 한다. 숫자 값은 대부분 십진 서식을 사용한다.