42seoul/circle-1

[ ft_printf ] 1. printf

saniii 2021. 12. 29. 20:09

# printf 

- C언어의 표준 출력 함수 

- 여러 종류의 데이터를 각 서식에 맞게 출력할 수 있다.

- 원형

# include <stdio.h>
int printf(const char *format, ...);

 > format에 쓰여진 데이터를 ...(서식지정자)의 형식으로 출력한다. 

 

- 서식 지정자 (format specifier)

: 서식 지정자를 통해 printf()로 출력할 데이터의 서식을 지정할 수 있다. 

서식 지정자 출력 데이터 서식 지정자 출력 데이터 
%c 하나의 character %x 부호 없는 16진 정수 (소문자)
%s 문자열 %X 부호 없는 16진 정수 (대문자)
%d 부호 있는 10진 정수 %% 퍼센트(%) 기호
%i 부호 있는 10진 정수 %e 실수 (e-표기법)
%u 부호 없는 10진 정수 %E 실수 (E-표기법)
%o 부호 없는 8진 정수 %g %e나 %f 보다 간략하게 출력 (실수)
%f 실수 (소수점 이하 6자리까지) / 부동 소수점 수 %G %E나 %f 보다 간략하게 출력 (실수)

   * %p : 포인터 유형 : 인수를 16진수로 된 '주소'로 표시

 

  * 여러가지의 서식 지정자를 동시에 사용할 수 있으나 서식 지정자 타입의 순서가 출력할 데이터의 타입 순서와 일치해야한다. 

printf("")

 

 

- 형식 태그 (format tag)

 : 서식 지정자에 숫자와 부호를 추가하여 출력 값의 간격을 조정할 수 있다. 

 : %[flag(플래그)][width(너비)][.precision(정밀도)]서식지정자

 

> 플래그 : 

플래그 의미 비고
- 필드에서 값을 왼쪽으로 정렬 기본은 우측정렬
+ 결과값이 양수이던 음수이던 부호를 붙여 출력되도록 함 %d, %i 만 적용
0 오른쪽 정렬일 때 공백을 0으로 채움  
' ' (blank) 앞에 부호가 붙지 않으면(양수이면) 한 칸 띄어서 출력 양수 : " 123" / 음수 : "-123"
%d, %i 만 적용
# 8,16진수 상수 표시님 0, 0x, 0X를 앞에 붙임 %o, %x, %X 만 적용
. 실수일 때 .n(n은 10진정수)이면 소수점 이하 n자리까지 출력  

 

> 너비(폭) : 출력되는 데이터의 폭을 지정

#include <stdio.h>


int main (){

    printf("1:%7d\n", 111);
    printf("2:%7d\n", 1111);

    return (0);
}

1은 공백을 4개, 2는 공백을 3개 가진다.&amp;nbsp; &amp;nbsp;즉, 출력할 숫자까지 포함하여 7자리를 차지

 

> 정밀도 : 몇 자리까지 출력해야하는지 지정

#include <stdio.h>


int main (){

    printf("%.2f\n", 1.2);    
    printf("%.2f\n", 1.2053452);

    return (0);
}

 

 

> 길이

hh / h / l / ll / j / z / t 의 플래그가 서식 지정자앞에 붙으면 플래그에 따라 원하는 형으로 변환하여 출력한다. 

ex)
hh 는 diouxX가 뒤에 오면 인자를 char 혹은 unsigned char로 변환하여 출력
h 는 diouxX가 뒤에 오면 인자를 short 혹은 unsigned short로 변환하여 출력
l 은 뒤에 diouxX가 뒤에 오면 인자를 long 혹은 unsigned long으로 변환하여 출력.
ll 은 뒤에 diouxX가 뒤에 오면 long long 혹은 unsigned long long으로 변환하여 출력
j 는 뒤에 diouxX가 오면 intmax_t 로 변환하여 출력
z 는 뒤에 diouxX가 오면 size_t 로 변환하여 출력
t 는 뒤에 diouxX가 오면 ptrdiff_t 로 변환하여 출력

 

 

 

 

> 반환값

출력되는 문자열의 개수.