C 언어에서 형식 지정자(Format Specifier)는 입력·출력(I/O) 작업에 사용되는 특수 기호입니다. 형식 지정자를 통해 컴파일러는 입출력 연산에서 어떤 타입의 데이터가 처리되는지 판단할 수 있습니다.
형식 지정자에 영향을 주는 요소
형식 지정자의 동작 방식에는 몇 가지 요소가 영향을 미칩니다.
- 마이너스 기호(-): 출력 결과를 왼쪽으로 정렬합니다.
- % 뒤의 숫자: 최소 필드 너비를 지정합니다. 문자열 길이가 지정된 너비보다 짧으면 남은 공간은 공백으로 채워집니다.
- 마침표(.): 필드 너비와 정밀도(precision)를 구분하는 역할을 합니다.
주요 형식 지정자 목록
아래 표는 C 언어에서 자주 사용되는 형식 지정자와 그 용도를 정리한 것입니다.
| 지정자 | 용도 |
|---|---|
| %c | 단일 문자(character) |
| %s | 문자열(string) |
| %hi | short형 부호 있는(signed) 정수 |
| %hu | short형 부호 없는(unsigned) 정수 |
| %Lf | long double형 실수 |
| %n | 아무것도 출력하지 않음(지금까지 출력된 문자 수를 변수에 저장) |
| %d | 10진수 정수(기본 진법 10) |
| %i | 10진수 정수(진법 자동 인식) |
| %o | 8진수(base 8) 정수 |
| %x | 16진수(base 16) 정수 |
| %p | 메모리 주소(포인터) |
| %f | float형 부동소수점 실수 |
| %u | 부호 없는(unsigned) 10진수 int |
| %e | 과학적 표기법으로 표현한 부동소수점 실수 |
| %E | 과학적 표기법으로 표현한 부동소수점 실수(대문자 E 사용) |
| %% | % 기호 자체를 출력 |
예제 코드
다음은 8진수 형식 지정자 %o를 활용한 C 프로그램 예제입니다.
#include <stdio.h>
int main() {
int num = 31;
printf("%o\n", num);
return 0;
}
실행 결과
위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다.
37
31을 8진수로 변환하면 37이 되므로, printf 함수가 num 값을 8진수 형태로 정확하게 변환하여 출력한 것을 확인할 수 있습니다.