입출력 형식

 

C 언어에서는 printf, scanf 등 다양한 함수에서 변수를 입출력에 사용하기 위해 서식 지정자와 플래그 등을 조합해서 사용한다. 예를 들어 a 라는 변수에 숫자를 입력받고, 입력된 숫자를 출력하기 위해서는 아래와 같은 코드를 사용할 수 있다.

int a;
scanf("%d", &a);
printf("%d", a);

위 코드에서 %d 에 해당하는 것이 입출력 형식인데, 여기서는 간단하게 서식 지정자만 사용되었다.

간단하게 서식 지정자만으로도 사용할 수 있지만, 플래그, 폭 등을 지정해서 사용해야 될수도 있다. 예를 들어서 변수를 16 진수로 출력하거나, 폭을 지정하는 등 원하는 형식으로 출력하려 한다면 서식 지정자 외 플래그 등을 사용해야 한다.

입출력 형식은 아래와 같다.

%[플래그][폭][.정밀도][길이]서식 지정자

 


서식 지정자

 

서식 지정자 의미
d, i 부호를 포함한 10진수 정수
u 부호를 포함하지 않는 10진수 정수
o 부호를 포함하지 않는 8진수 정수
x 부호를 포함하지 않는 16진수
abcdef를 소문자로 표기
X 부호를 포함하지 않는 16진수
ABCDEF를 대문자로 표기
f 소수점으로 표현한 10진수 실수
NaN, Inf 등을 소문자로 표기
F 소수점으로 표현한 10진수 실수
NaN, Inf 등을 대문자로 표기
e 지수 표기법으로 표현한 10진수 실수
e를 소문자로 표기
E 지수 표기법으로 표현한 10진수 실수
E를 대문자로 표기
g 소수점 표기법과 지수 표기법 중 짧은 길이로 표현되는 서식 지정자 사용
소수점 이하 불필요한 0은 생략
e를 소문자로 표기
G 소수점 표기법과 지수 표기법 중 짧은 길이로 표현되는 서식 지정자 사용
소수점 이하 불필요한 0은 생략
e를 대문자로 표기
a 16진수 실수
abcdef를 소문자로 표기
A 16진수 실수
ABCDEF를 대문자로 표기
c 문자
s 문자열
p 포인터 주소
n 출력한 문자 개수를 저장

 


길이

 

길이 의미
hh 매우 짧은 정수형
char, unsigned char
h 짧은 정수형
short, unsigned short
l 긴 정수형 혹은 긴 실수형
long, unsigned long, double
ll 매우 긴 정수형
long long, unsigned long long
L 매우 긴 실수형
long double

 

int, float 등은 길이를 나타낼 필요 없이 그냥 사용하면 된다.

 


플래그

 

플래그 의미
+ 양수일 때는 + 부호 출력
음수일 때는 - 부호 출력
- 왼쪽 정렬
(공백) 양수일 때는 부호를 출력하지 않음
음수일 때는 - 부호 출력
# 숫자 앞에 진법을 표기
실수의 경우 항상 소수점을 표시
소수점 이하 불필요한 0을 생략하지 않음
0 출력하는 폭의 남는 공간에 0 을 출력

 


폭과 정밀도

 

폭은 출력되는 문자열의 폭을 지정한다. 항상 동일한 폭으로 출력하고 싶은 경우에 많이 사용한다. 예를 들어 사용자의 이름을 같은 폭으로 출력하고 싶은데, 사용자의 이름이 어떤 사용자는 두 글자이고, 어떤 사용자는 세 글자라면 폭을 세 칸으로 지정해서 사용자의 이름이 출력되는 폭을 똑같게 맞춰줄 수 있다.

정밀도는 소수점 아래 출력되는 자리를 지정할 때 많이 사용된다. 예를 들어 소수점 세 번째 자리까지만 출력하고 싶다면 .3 을 사용하면 된다.

정밀도는 문자열의 길이도 지정할 수 있다. 예를 들어 어떤 문자열을 입력받을 때 20 자 이상 넘으면 안된다면 .20s 를 사용하여 20 글자까지만 입력받을 수 있고, 또는 .20s 로 출력하여 20 자를 넘어가는 글자는 출력하지 않을 수 있다.

 

 

애스터로이드