[ft_printf]서식


이번 포스트는 서식 지정 출력함수에 관한 내용입니다.


1️⃣ 서식 지정(formatted) 출력함수

  • C에서 출력을 논할 때 가장 기본이 되는 함수입니다.
  • 서식문자열을 쓰는이유는 추가 메모리 할당없이 기존 자료형출력 스트림문자들로 출력해주기 때문입니다.
  • 대표적인 서식 지정 출력함수
    1. printf(): 콘솔창(stdout)에 출력
    2. fprintf(): 스트림(stream)에 출력
    3. sprintf(): 문자열에 출력

자세한내용 >[C]printf & sprintf & fprintf




2️⃣ 서식 문자열 형식

%[플래그][너비][ .숫자 정밀도 | .문자열 최소/최대 출력 개수][길이]서식 지정자

  • 일반적으로 %뒤에 최대 4개까지 지정자를 지정할 수 있습니다.
  • 서식 지정자는 필수로 작성해야하고 나머지는 선택사항입니다.
  • 반드시 위의 순서에 맞춰서 지정자를 작성해야 합니다.


3️⃣ 서식 지정자

서식 지정자출력예시
c문자A
s문자열ABC
d부호있는 십진법 정수65
u부호없는 십진법 정수65
o부호없는 정수를 8진수(부호있으면 오버플로우되서출력)
숫자 앞에 ‘0’안 붙여줌
101
x, X부호없는 정수를 16진수(소문자, 대문자)로 출력
숫자 앞에 ‘0x’, ‘0X’는 안 붙여줌
41
f부동소수점(십진법)6.500000
e/E부동소수점을 지수표기법(e, E)로 출력6.500000e+000
6.500000E+000
g, G부동소수점을 최대 소수점5째자리까지
(다른 지정자없을시) 간략하게출력
6.24343
p포인터값(주소)0061FECC




4️⃣ 서식규칙 - 너비

  • 정수로 작성하며 출력값이 너비보다 작으면 공백으로 출력
  • 기본적으로 오른쪽 정렬

< 예시 >

int num = 65;
printf("%d\n", num);
printf("%5d\n", num);
65
   65




5️⃣ 서식규칙 - 플래그

(1) ' - '

왼쪽으로 정렬시켜줍니다.

int num = 65;
printf("%-5d\n", num);
65

(2) '0'

왼쪽 빈공간을 0으로 채워줍니다.

int num = 65;
printf("%05d\n", num);
printf("%-05d\n", num);
00065
65

(3) '+'

양수이면 +기호를 붙여 줍니다.

int num = 65;
printf("%+d\n", num);
printf("%+5d\n", num);
printf("%+05d\n", num);
+65
  +65
+0065

(4) ' '(공백)

한칸 띄어서 출력해줍니다.(여러번 공백을 줘도 한칸 적용, ‘+‘기호가 있으면 무시합니다)

int num = 65;
printf("% d\n", num);
printf("% 05d\n", num);
printf("% +05d\n", num);
 65
 0065
+0065

(5) '#'

조합출력
#o부호없는 정수(8진수)를 ‘0’을 붙여서 출력
#x부호없는 정수(16진수)를 ‘0x’를 붙여서 출력
#X부호없는 정수(16진수)를 ‘0X’를 붙여서 출력
int num = 65;
printf("%#o\n", num);
printf("%#x\n", num);
printf("%#X\n", num);
0101
0x41
0X41




6️⃣ 서식규칙 - 정밀도

(1) 최소 너비 . 소수점 아랫자리 수

  • 서식 지정자 ' f '와 함께 사용합니다.
  • 원래 숫자의 너비(소수점 포함)보다 최소 너비가 크면 왼쪽을 공백으로 채웁니다.
  • 원래 숫자의 소수점 아랫자리 수보다 소수점 아랫자리 수가 크면 오른쪽을 0으로 채웁니다.
  • 기본 소수점 아랫자리 수: 6 (기존’f’서식자와 동일)
    float num = 6.5;
    printf("%f\n", num);
    printf("%7.3f\n", num);
    printf("%2.3f\n", num);
    
6.500000
  6.500
6.500

(2) 최소 너비 . 최대 너비

  • 서식 지정자 ' s '와 함께 사용합니다.
  • 출력할 문자열의 길이가 최소 너비보다 작으면 왼쪽을 공백으로 채웁니다.
  • 출력할 문자열의 길이가 최대 너비보다 크면 문자열을 자릅니다.(뒷 부분부터)
    char string[] = "Hi, I'm kirim!";
    printf("%s\n", "good");
    printf("%6.8s\n", "good");
    printf("%s\n", string);
    printf("%4.8s\n", string);
    
good
  good
Hi, I'm kirim!
Hi, I'm




© 2021.02. by kirim

Powered by kkrim