Location | Tag | Media  ||  A | P

------------------------------------------------------------------------------------------------------------------------
목적: 
프로그래밍을 하다보면 printf문을 사용해서 보기 편하게 출력해야할 일이 생기기 마련이죠. 
스페이스바나 탭기호를 넣어서 어렵게 하지 마시고, 
printf문의 다양한 출력 형식을 활용하면 쉽게 가능합니다. 


알아봅시다:

1. 좌,우 정렬
출력되는 자료를 어느 방향으로 정렬할 것인지를 결정해 줍니다.
(-)부호를 앞에 붙이면 왼쪽 정렬이 됩니다. 

당연히 아무것도 붙이지 않으면 오른쪽 정렬이 되구요. 


평소에는 쓸 일이 없겠지만.. 아래 형식에 따라 이쁘게 줄을 맞출때 유용합니다. 



2. 다양한 출력 형식

%c : char(문자)형의 한 문자로 출력(그냥 '%c'로만 사용하시기 바랍니다.)
%d : 부호 있는 정수로 출력
%o : 부호 없는 8진수 정수로 출력
%x : 부호 없는 16진수 정수로 소문자 출력
%X : 부호 없는 16진수 정수로 대문자 출력
%u : 부호 없는 정수로 출력
%f : float나 double형의 실수로 출력
%e : 과학 기술 계산용(예 : 1e5 = 100000)으로 e를 소문자로 출력
%E : %e와 비슷하나 E를 대문자로 출력
%g : %f나 %e중 짧은 것으로 선택
%G : %f나 %E중 짧은 것으로 선택
%s : 문자열 출력('\0'을 만날 때 까지 계속 출력합니다.)
%p : 포인터의 주소를 hex값으로 출력
%% : '%'를 그대로 출력(그냥 '%%'로 사용하시기 바랍니다.)


3. 출력할 최대 자릿수 지정

자리가 모자라면 그냥 무시하고 계속 출력하고
자리가 남으면 나머지를 공백(정수,문자열) 혹은 0(소수점 유효숫자 이하)으로 채웁니다.

※ 주의 : 실수의 경우에는 소수점까지 포함한 전체 자릿수를 말합니다.

예) 123을 %5d로 출력하면 -> __123 ( _는 공백)
123.456를 %10f로 출력하면 -> 123.456000
"ASDF"를 %10s로 출력하면 -> ______ASDF


4. 최대 출력 폭(길이)과 문자 수를 구분(문자열)

.(점) 을 이용해서 구분해 줄 수 있습니다. 
소수점 이하 자릿수를 구분(실수)해 줍니다.

예) 123.456789 를 %10.3f로 출력하면 -> ___123.457 (반올림 됨) 



5. 소수점 이하 자릿수(실수)나 출력할 문자 수(문자열) 
.(점) 이후에 숫자로 지정해줍니다. 

출력할 0의 갯수(정수)를 지정할 때도 사용됩니다.

실수 출력인 경우에는 출력할 자릿수만 소수 이하로 출력되며
문자열의 경우에는 맨 앞부터 출력할 문자수만큼 출력합니다.

예) "ASDF"를 %.2s로 출력하면 -> ___AS
1.23456789 을 %.3f로 출력하면 -> 1.235 (반올림 됨)
123을 %.12d로 출력하면 -> 000000000123


6. long형으로 출력

실수, 정수형에서만 사용이 가능한 옵션입니다. 
(long형은 double, long double, long, unsigned long을 말합니다.)



다양한 예제:


1. "ASDF"라는 문자열

%s : ASDF
%10s : ______ASDF
%-10s : ASDF______
%10.3s : _______ASD
%-10.3s : ASD_______


2. 123.456789 라는 실수 

%f : 123.456789 
%.3f : 123.457 (반올림 됨)
%10.3f : ___123.457
%-10.3f : 123.457___
%10.3E : _1.235E+02
%-10.3E :  1.235E+02_

3. 123 라는 정수

%d : 123
%5d : __123
%05d : 00123 
%.5d : 00123 (%05d와 같은 의미)
%-5d : 123__
%x : 7b
%5x : ___7b
%-5x : 7b___
%05x : 0007b
%-5X : 7B___
%o : 173
%07o : 0000173
%-7o : 173____
%7o : ____173

Posted by Bestend
: