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);
}
> 정밀도 : 몇 자리까지 출력해야하는지 지정
#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 로 변환하여 출력
> 반환값
출력되는 문자열의 개수.