[C언어][초급] Chapter09. 서식 지정자 사용법 – 다양한 값 출력의 핵심
printf 함수는 C언어에서 값을 출력할 때 가장 많이 사용하는 함수입니다.
하지만 printf("%d", something); 이런 식의 기본적인 사용법만 익히고 넘어가면, 다양한 상황에서 원하는 형태로 데이터를 출력하지 못해 곤란할 수 있습니다.
예를 들어 실수를 소수점 아래 몇 자리까지 출력하고 싶다거나, 정수와 문자를 함께 출력하려고 할 때, 문자열 사이에 %기호를 넣고 싶을 때 등 출력 형태를 조절할 수 있는 기능이 필요하죠.
바로 그때 필요한 것이 **서식 지정자(format specifier)**입니다.
이번 글에서는 C언어의 주요 서식 지정자들과 활용법을 차근차근 정리해보겠습니다.
● 서식 지정자란?
서식 지정자는 printf, scanf 등의 함수에서 데이터의 자료형과 출력 형식을 지정해주는 역할을 합니다.
% 기호로 시작하며, 뒤에 붙는 문자로 어떤 데이터인지를 구분합니다.
예를 들어 %d는 정수를 의미하고, %f는 실수를 의미하죠.
printf는 이 서식 지정자들을 통해 여러 개의 값을 한꺼번에 출력할 수도 있고, 출력 형식을 세밀하게 조정할 수도 있습니다.
● 주요 서식 지정자 정리
서식 지정자 | 대상 자료형 | 예시 코드 | 출력 결과 | 설명 |
%d | int (정수) | printf("%d", 10); | 10 | 정수를 10진수로 출력 |
%f | float, double | printf("%f", 3.14); | 3.140000 | 실수를 소수점 아래 6자리까지 출력 |
%.nf | float, double | printf("%.2f", 3.14159); | 3.14 | 소수점 아래 n자리까지 출력 |
%c | char (문자 1개) | printf("%c", 'A'); | A | 문자 출력 |
%s | 문자열 | printf("%s", "Hello"); | Hello | 문자열 출력 |
%% | 없음 (기호용) | printf("진행률: 80%%"); | 진행률: 80% | `% 기호 자체를 출력하고 싶을 때 사용 |
● 서식 지정자 실제 예제
1. 정수 출력
int score = 95;
printf("시험 점수: %d점\n", score); // 출력: 시험 점수: 95점
2. 실수 출력 (자릿수 지정)
float pi = 3.141592;
printf("원주율: %.2f\n", pi); // 출력: 원주율: 3.14
3. 문자 출력
char grade = 'A';
printf("등급: %c학점\n", grade); // 출력: 등급: A학점
4. 문자열 출력
char name[] = "홍길동";
printf("이름: %s\n", name); // 출력: 이름: 홍길동
5. 퍼센트 기호 출력
printf("달성률: 100%%\n"); // 출력: 달성률: 100%
● 서식 지정 시 자주 발생하는 실수
- 변수 자료형과 서식 지정자가 다르면 오류가 발생하거나 엉뚱한 값이 출력됩니다.
float weight = 60.5;
printf("%d", weight); // 잘못된 예: %d는 정수용인데 실수를 입력함
- 문자 출력 시 %c, 문자열 출력 시 %s를 혼동하지 않도록 주의합니다.
- 실수 출력 시 정밀도를 지정하지 않으면 기본 6자리까지 출력됩니다. 필요에 따라 %.1f, %.3f 등으로 조정해야 깔끔합니다.
● 출력 서식과 가독성
printf 함수는 단순히 데이터를 출력하는 것을 넘어서, 화면 출력의 가독성까지 고려하게 합니다.
출력 결과가 깔끔할수록 프로그램의 품질도 올라가죠.
int x = 5, y = 7;
printf("x + y = %d\n", x + y); // 보기 좋은 출력
이처럼 printf와 서식 지정자를 자유롭게 조합할 수 있으면, 디버깅이든 사용자 인터페이스든 보다 직관적인 출력 화면을 만들 수 있습니다.
실습 문제
아래 문제는 직접 코드를 작성해보고, 실행 결과를 확인한 후 스스로 정답을 유추해보는 형태입니다.
정답은 바로 아래에서 확인할 수 있습니다.
문제 1
정수형 변수 a와 b를 선언하고 각각 7과 3을 저장한 뒤, 다음과 같이 출력되도록 코드를 완성하세요.
a = 7, b = 3
문제 2
실수형 변수 pi에 3.14159를 저장하고, 소수점 아래 둘째 자리까지만 출력하세요.
문제 3
문자형 변수 grade에 'B'를 저장하고, 다음 문장을 출력해보세요.
당신의 등급은 B입니다.
문제 4
printf를 이용하여 문자열 "Hello, C!"를 출력해보세요.
문제 5
정수형 변수 score가 85일 때, printf를 이용하여 "당신의 점수는 85점입니다."라는 문장을 출력해보세요.
문제 6
정수 15와 4의 나눗셈 결과를 소수로 출력해보세요.
출력 예시:
15 / 4 = 3.75
문제 7
문자 %를 출력하기 위해 printf에 어떤 서식을 써야 하는지 확인하고 출력 코드를 작성해보세요.
예시 출력:
성공률: 100%
문제 8
다음 코드의 실행 결과를 예상해보세요.
int x = 12;
printf("%f\n", x);
문제 9
문자열 "홍길동"을 출력하고 줄을 바꾸는 코드를 작성하세요.
문제 10
아래 코드의 빈칸을 채워, 정수와 실수를 함께 출력해보세요.
int age = 23;
float height = 175.3;
printf("나이: ???, 키: ???\n");
▶ 정답 확인하기
정답 1
int a = 7, b = 3;
printf("a = %d, b = %d\n", a, b);
정답 2
float pi = 3.14159;
printf("원주율: %.2f\n", pi);
정답 3
char grade = 'B';
printf("당신의 등급은 %c입니다.\n", grade);
정답 4
printf("Hello, C!\n");
정답 5
int score = 85;
printf("당신의 점수는 %d점입니다.\n", score);
정답 6
int a = 15, b = 4;
printf("15 / 4 = %.2f\n", (float)a / b);
정답 7
printf("성공률: 100%%\n");
정답 8
(경고 또는 이상 출력)
→ int형 값을 %f로 출력했기 때문에 잘못된 결과가 출력됨.
정답 9
printf("홍길동\n");
정답 10
printf("나이: %d, 키: %.1f\n", age, height);