1. 표준 출력 함수
우선, C++에서는 cout 출력 함수를 사용하지만 속도 문제가 있어서 특정 상황에서는 printf()를 사용하는 경우가 있습니다. C언어는 당연히 표준 출력 함수가 printf() 입니다. 여기서 print 뒤에 붙은 f는 Formatted의 약자입니다. 뒤에 조금 더 자세히 설명하겠지만, printf()는 출력할 데이터를 어떤 서식에 맞춰 출력할지 서식 지정자 (Format Spectifier)를 통해 지정할 수 있습니다.
2. printf() 사용법
우선 헤더는 <stdio.h> 입니다.
stdio.h는 Standard Input/Output library의 약자입니다. 표준 라이브러리 함수의 매크로 정의, 상수, 여러 형의 입출력 함수가 포함되어 있는 헤더입니다.
예문은 아래와 같습니다.
printf(const char* restrict format, ...);
1. const char* restrict format -> 출력할 데이터를 집어넣습니다.
2. 두 번째 인자(... 으로 되어있는 곳)는 첫 번째 인자의 종류와 갯수에 따라 변수가 들어옵니다. 아래에 조금 더 자세히 설명되어있습니다.
2.1. printf() 사용법에 대한 자세한 설명
그냥 텍스트를 출력하는 구문은 아래와 같습니다.
printf("Hello, World");
변수를 넣어서 출력하고 싶으면 아래와 같습니다.
int level = 275;
printf("당신의 레벨은 %d입니다.", level);
level이라는 변수는 "부호 있는 10진 정수" 이기 때문에 서식 지정자 %d를 넣어주고, 해당하는 변수를 뒤에 적어주면 됩니다.
서식지정자 표는 아래와 같습니다.
3. 서식 지정자
서식 지정자 | 출력 데이터 형태 |
%c | 하나의 문자 |
%s | 문자열 |
%d | 부호 있는 10진 정수 |
%i | 부호 있는 10진 정수 |
%f | 고정 소수점으로 표현한 실수 (6자리) |
%o | 부호 없는 8진 정수 |
%u | 부호 없는 10진 정수 |
%x | 부호 없는 16진 정수 |
%e | 부동 소수점으로 표현한 실수 |
%g | 값에 따라 %f나 %e를 사용함 |
%% | 퍼센트 기호 출력 |
이외에도 몇 가지 사용 방법이 있습니다. 예를 들어서 printf() 함수에서 double 자료형을 사용하려면 %lf를 사용하고 float 자료형을 사용할 때는 %f를 사용해야 했습니다. 그런데 지금은 %lf나 %f나 크게 상관이 없습니다.
99년 이전에는 printf()에서 double, float 둘 다 %f를 사용했었으나 99년도에 %lf가 추가됐습니다. 그래서 printf() 함수에 float 자료형이 전달되면 자동으로 double로 바뀝니다.
다만, scanf()에서는 double은 %lf, float에선 %f를 사용해야합니다. 자세한 내용은 scanf()에서 설명하도록 하겠습니다.
3.1. 서식 지정자의 동시 사용
인자를 보면 알겠지만 여러 개의 데이터에 서로 다른 서식을 지정해서 출력할 수 있습니다. 주의해야 할 점은 서식 지정자의 순서와 타입은 출력할 데이터의 순서, 타입과 반드시 일치해야 합니다.
printf("사용자의 레벨은 %d, 위치한 곳은 %s입니다." 275, "마이스터빌");
<실행 결과>
사용자의 레벨은 275, 위치한 곳은 마이스터빌입니다.
4. 출력 필드의 폭 설정
서식 지정자의 %와 타입 사이에 숫자를 넣어서 필드의 폭을 직접 설정할 수 있습니다. 또한 추가 설정은 아래와 같습니다.
1. 내부 숫자는 오른쪽 정렬이 기본 설정이기 때문에 숫자 앞에 '-' 기호를 붙여서 왼쪽 정렬로 변경할 수 있다.
2. 숫자 앞에 '+'를 붙이면 양수 음수 기호가 붙여져서 출력된다.
3. 소수 부분의 숫자는 출력되는 소수의 자릿수를 명시한다.
printf("%%d를 사용한 결과:|%d|\n", 123);
printf("%%7d를 사용한 결과:|%7d|\n", 123);
<실행 결과>
%d를 사용한 결과:|123|
%7d를 사용한 결과:| 123|
5. printf()에서 사용하는 특수기호
\' 작은따옴표
\" 큰 따옴표
\? 물음표
\\ 역슬래시
\n 줄 바꿈, 개행
\t 탭
'Programming > C++' 카테고리의 다른 글
[C/C++] scanf() 입력 함수 (0) | 2023.03.12 |
---|