본문 바로가기
Basic/C/C++

[C언어] 제 11 강 : 서식문자

by boxbop 2012. 1. 16.
반응형

 printf 와 scanf의 서식문자에 대해서 좀 더 자세하게 알아보도록 하겠습니다.
간단한 설명은 지난 강의에서 소개한적이 있습니다. printf문과 scanf문의 서식문자는 비슷하면서도 다르므로 혼동할 수 있으니 주의하시구요~~~

[Printf함수의 서식문자]

%d            : int (부호 있는 10진수 정수)
%u            : unsigned int (부호 없는 10진수 정수)
%o            : unsigned int (부호 없는 8진수 정수)
%x, %X     : unsigned int (부호 없는 16진수 정수)

%f             : double (10진수 방식의 부동소수점 실수)
%e, %E     : double (e 또는 E 방식의 부동소수점 실수)
%g, %G     : dobule (값에 따라 %f와 %e사이에서 선택)

%c            : int (값에 대응하는 문자)
%s            : char * (문자열)

 실수형을 출력하는 서식문자를 보시면 double형만 나와있는데요 float형을  출력할때도 마찬가지로 %f를 사용하시면 됩니다~

 서식문자는 출력과 관련된 다양한 정보와 조합이 가능합니다. 쉽게 말하자면 기존에 서식문자에 '옵션'을 붙인다고 생각하시면 편하겠습니다~ 

% d ----------> % # 7 .5  h d
                           A  B  C  D

 위와 같이 옵션이 추가 되었습니다. #, 7, .5, h 라는 4가지의 추가적인 정보가 삽입되었는데요 어디한번 살펴보도록 하겠습니다.

 # : 출력의 형태에 조절을 가하기 위한 특별한 표시문자
 7 : 출력에 사용되는 최소한의 폭
.5 : 정밀도
 h : 출력 데이터의 크기정보 변경 

 각각의 영역을 순서대로 A, B, C, D라고 정합시다.
첫 번째 #이 들어가있는 A영역에 들어가는 문자들을 보통 '플래그'라고 부릅니다. 총 5개가 존재합니다

A 영역
- : 좌측 정렬
0 : 빈 공간을 0으로 채움
+ : 출력할 수의 크기가 0보다 클때 + 기호 붙여줌
공백 : 출력할 수의 크기가 0보다 클 때 앞에 빈 칸 하나 출력
# : 8진수, 16진수 출력 시 각각 0과 0x를, 실수의 경우 소수점 이하 0 출력

B 영역
 여기에 들어가는 정수는 출력의 최소 폭을 지정하는 용도입니다. 예를들어 5라는 정수가 들어가 있다면 총 다섯칸의 공간을 할당해서 출력을 진행합니다. 정렬은 기본적으로 오른쪽 정렬되어 출력이 되구요~

C 영역
 정밀도 같은 경우는 출력하는 데이터가 정수, 실수, 문자열에 따라서 의미가 달라집니다. 정수에서의 정밀도는 나타내고 싶은 길이라고 생각하시면 편하구요 문자열도 마찬가지입니다. 심수에서는 소수점 이하의 자리 수를 의미합니다.

D 영역
 D영역은 예를들어 int형에서 double형을 출력하기 위해서는 %d에서 %ld로 바꾸어 사용해야 합니다. 예제처럼 단순히 추가적인 문자열을 의미하죠. 사실 이러한 영역모두 외울필요는 없습니다. 단순히 필요할때 참고해서 사용하면 됩니다.

[scanf함수의 서식문자]

%d            : int (부호 있는 10진수 정수)
%u            : unsigned int (부호 없는 10진수 정수)
%o            : unsigned int (부호 없는 8진수 정수)
%x            : unsigned int (부호 없는 16진수 정수)

%c            : char (문자)
%s            : char * (문자열)

%f, %e, %g : float (부호 있는 실수)

 printf함수의 서식문자와는 다르게 scanf함수의 실수형 서식문자는 사실상 의미가 동일하므로 어떤 것을 사용하여도 무관합니다. scanf함수도 마찬가지로 서식문자를 조합하여 사용할 수 있습니다. 그러나 설명은 생략하도록 하구요 한가지 주의하실 점은 double형 데이터를 출력할 때에는 %f를 사용하면 되지만. double형으로 데이터를 입력 받을 때에는 %lf를 사용해야 합니다.

 여기까지가 서식문자에 대한 설명이었는데요. 아마 이러한 서식문자들을 전부 외우고 다니는 사람은 없을 겁니다. 주로 자주 사용하는 서식문자 몇개만 외워두고 필요한 상황에는 검색이나 서적을 통해서 찾아 사용하곤 합니다. 부담갖지말고 이런게 있다라고만 가볍게 넘어가시면 되겠습니다~
반응형