printf
함수 개요printf
함수는 표준 출력(stdout)에 형식화된 문자열을 출력하는 함수입니다. 첫 번째 인자로 형식 문자열을 받고, 그 뒤로 출력할 값을 인자로 받습니다.
형식 문자열은 출력할 형식을 지정하는 문자열로, 형식 지정자를 포함합니다. 형식 지정자는 %
기호로 시작하며, 출력할 데이터의 타입과 형식을 결정합니다.
형식 지정자는 printf
함수가 값을 출력할 때 사용할 형식을 지정합니다. 주요 형식 지정자는 다음과 같습니다:
형식 지정자 | 설명 |
---|---|
%d | 부호 있는 10진수 정수 |
%u | 부호 없는 10진수 정수 |
%o | 8진수 정수 |
%x | 16진수 정수 (소문자) |
%X | 16진수 정수 (대문자) |
%c | 문자 |
%s | 문자열 |
%f | 부동소수점 (소수점 표기) |
%e | 부동소수점 (지수 표기) |
%g | 부동소수점 (소수점 또는 지수 표기) |
%p | 포인터 |
%% | % 문자 출력 |
printf
함수 예제 코드#include <cstdio>
int main()
{
{
// signed int 10진수 출력
printf("%d + %d = %i\n", 2, 3, 2 + 3);
}
{
// unsigned int 10진수 출력
printf("%u + %u = %u\n", 3, 2, 3 + 2);
}
{
// unsigned int 10진수 출력 형식으로 음수 int 출력
printf("%u\n", -1);
}
{
// unsigned char 10진수 출력 형식으로 음수 int 출력
printf("%hhu\n", -1);
}
{
// char 출력
char ch = 'b';
printf("%c%c\n", 'a', ch);
}
{
// 부동소수점 출력(%f, %lf 같음)
printf("%f - %f = %lf\n", 2.0, 3.0f, -1.0f);
}
{
// unsigned int 8, 16진수 출력
printf("%o, %x, %X\n", 10, 10, 10);
}
{
// unsigned char 16진수 출력
printf("%hhx\n", 255);
}
{
// unsigned char 16진수 출력(overflow)
printf("%hhx\n", 256);
}
{
// 앞에 0을 채워 총 10글자로 맞추기
printf("%010d\n", 1);
printf("%010d\n", -1);
printf("%010f\n", 1.1);
printf("%010f\n", -1.1);
}
{
// 소수점 자리수 표현
printf("%010.1f\n", 1.1);
printf("%010.1f\n", -1.1);
}
{
// 앞에 여백을 넣기
printf("%10d\n", 1);
printf("%10d\n", -1);
printf("%10f\n", 1.1);
printf("%10f\n", -1.1);
}
{
// 뒤에 여백을 넣기
printf("%-10d\n", 1);
printf("%-10d\n", -1);
printf("%-10f\n", 1.1);
printf("%-10f\n", -1.1);
}
{
// % 출력하기
printf("%%\n");
}
{
// stdout을 output.txt로 연결
freopen("output.txt", "w", stdout);
printf("Hello World!");
}
}
서명된 정수형 출력:
printf("%d + %d = %i\n", 2, 3, 2 + 3);
%d
와 %i
는 서명된 10진수 정수를 출력합니다.부호 없는 정수형 출력:
printf("%u + %u = %u\n", 3, 2, 3 + 2);
%u
는 부호 없는 10진수 정수를 출력합니다.부호 없는 정수로 음수 출력:
printf("%u\n", -1);
%u
를 사용하여 음수를 출력하면, 내부적으로 2의 보수로 처리된 결과를 출력합니다.부호 없는 char로 음수 출력:
printf("%hhu\n", -1);
%hhu
는 부호 없는 char를 10진수로 출력합니다.문자 출력:
char ch = 'b';
printf("%c%c\n", 'a', ch);
%c
는 문자를 출력합니다.부동소수점 출력:
printf("%f - %f = %lf\n", 2.0, 3.0f, -1.0f);
%f
와 %lf
는 부동소수점을 출력합니다.8진수, 16진수 출력:
printf("%o, %x, %X\n", 10, 10, 10);
%o
는 8진수, %x
는 소문자 16진수, %X
는 대문자 16진수로 출력합니다.부호 없는 char의 16진수 출력:
printf("%hhx\n", 255);
printf("%hhx\n", 256);
%hhx
는 부호 없는 char를 16진수로 출력합니다.0으로 채워 출력:
printf("%010d\n", 1);
printf("%010d\n", -1);
printf("%010f\n", 1.1);
printf("%010f\n", -1.1);
%010d
는 앞에 0을 채워 총 10자리로 출력합니다.소수점 자리수 표현:
printf("%010.1f\n", 1.1);
printf("%010.1f\n", -1.1);
%010.1f
는 소수점 이하 1자리까지 출력하고, 총 10자리로 출력합니다.앞에 여백을 넣기:
printf("%10d\n", 1);
printf("%10d\n", -1);
printf("%10f\n", 1.1);
printf("%10f\n", -1.1);
%10d
는 앞에 공백을 채워 총 10자리로 출력합니다.뒤에 여백을 넣기:
printf("%-10d\n", 1);
printf("%-10d\n", -1);
printf("%-10f\n", 1.1);
printf("%-10f\n", -1.1);
%-10d
는 뒤에 공백을 채워 총 10자리로 출력합니다.% 문자 출력:
printf("%%\n");
%%
는 % 문자를 출력합니다.stdout을 파일로 연결:
freopen("output.txt", "w", stdout);
printf("Hello World!");
freopen
을 사용하여 stdout을 파일로 리디렉션합니다.