일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 추천
- 원격 제어 프로그램
- 산책하기 좋은 곳
- 안드로이드 앱 개발
- 캡슐화
- 졸업 작품 소재
- 무료 동영상 강의
- 알고리즘
- 유튜브 동영상 강의
- 프로젝트
- 졸업 작품
- Windows Forms
- 언제나 휴일
- 동영상
- 표준 입출력
- 파이썬
- 실습으로 다지는 c#
- 소켓 통신
- 클래스 다이어그램
- 충남 천안
- 강의
- 네트워크 프로그래밍
- 표준 라이브러리 함수
- 실습
- C++
- 언제나휴일
- c#
- 소스 코드
- c언어
- 동영상 강의
Archives
- Today
- Total
프로그래밍 언어 및 기술 [언제나휴일]
printf 함수 [C언어 표준 라이브러리 함수] 본문
int printf(const char * format, …); 표준 출력 파일 스트림에 포멧을 지정하여 출력하는 함수
입력 매개 변수 리스트
format 포멧 지정 문자열
반환 값
실패 시 음수, 성공 시 출력한 문자 수
포멧 지정 문자열에 % 문자는 변환 사양 문자로 옵션으로 flags와 길이 수정자가 올 수 있으며 필수적으로 어떠한 형식으로 출력할 것인지 포멧 지정자 문자인 diouxXaAeEfFgGp% 중에 하나를 사용합니다.
출력 포멧 지정자 개요
타입(필수): diouxXaAeEfFgGp% 중에 1개
flag(선택): – + # 공백
. (선택)
길이 수정자(선택):hh h l ll j z t
출력 포멧
d,i 는 int 형식 인자를 10진수로 출력합니다.
o, u, x, X 는 unsigend int 형식 인자를 8진수(o), 10진수(u), 16진수(x 또는 X)로 출력합니다. x를 사용하면 16진수의 abcdef를 소문자로 출력하고 X를 사용하면 ABCDEF를 출력합니다.
f,F 는 double 형식 인자를 [-]ddd.ddd 형태로 출력합니다. 디폴트로 소수점 이하 6자리를 출력하며 [d].[d] 형태로 폭과 소수점 이하 출력할 자리수를 결정할 수 있습니다. 이 때 출력하지 않는 자리의 값은 반올림하여 출력합니다.
※ scanf로 %f는 float 형식 포인터 인자, %l"는 double 형식 포인터 인자일 때 사용하는 것 때문에 많은 개발자는 printf에서도 %lf로 double 형식 인자일 때 사용해야 하는 것으로 생각하지만 printf에서는 %lf에서 l은 아무런 영향도 미치지 않습니다. (ISO/IEC 9899:TC3 표준 문서 276 페이지~277페이지)
※ printf에서 %lf 나 %f가 차이가 없지만 scanf 사용하는 것과 혼돈하고 기억할 필요 없이 언제나 %lf를 쓴다고 문제가 발생하지는 않습니다.
e,E 는 double 형식 인자를 [-]d.ddde±dd 형태로 출력합니다.
g,G 는 알아서 f나 e(F나 E) 형태로 출력합니다.
a,A 는 double 형식 인자를 [-]0xh.hhhhp±dd 형태로 출력합니다.
c 는 문자를 출력합니다. int 형식 인자일 때 unsigned char로 변환 후 문자를 출력합니다.
s 는 종료 문자를 만나기 전까지의 문자의 조합을 출력합니다. 문자열을 출력한다고 생각할 수 있습니다.
p 는 void 포인터로 메모리 주소를 16진수로 출력합니다.
% 는 %를 출력합니다. 따라서 %를 출력하려면 %%로 포멧을 지정합니다.
flags에는 -+공백#O 가 있습니다.
- 는 출력 필드를 왼쪽으로 배치합니다. 디폴트는 오른쪽입니다.
+ 는 언제나 부호 필드를 출력합니다.
공백 은 기호가 없을 때 수 앞에 공백을 출력합니다.
# 은 8진수나 16진수로 출력할 때 수 앞에 o(또는 O)나 0x(또는 0X)를 출력합니다.
O 는 소수점 이하 자리가 값이 있는 부분까지만 출력합니다.
길이 수정자는 hh, h, l, ll,j, z, t, L이 있습니다.
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 로 변환하여 출력합니다.
사용 예
//C언어 표준 라이브러리 함수 가이드
//int printf(const char * format, ...); 표준 출력 파일 스트림에 포멧을 지정하여 출력하는 함수
// 다양한 포멧을 지정하여 출력
#include <stdio.h>
#include <limits.h>
#include <math.h>
int main(void)
{
printf("================type====================\n");
printf("1. 십진수로 출력: % -d \n", 123);
printf("2. 부호있는 십진수로 출력: %i \n", 123);
printf("3. 부호없는 8진수로 출력: %o \n", 123);
printf("4. 부호없는 십진수로 출력: %u \n", 123);
printf("5. 부호없는 16진수로 출력(소문자): %x \n", 123);
printf("6. 부호없는 16진수로 출력(대문자): %X \n", 123);
printf("7. 부동 소수점 표기로 출력: %f \n", 123.45);
printf("8. 지수형 표기로 출력(소문자): %e \n", 123.45);
printf("9. 지수형 표기로 출력(대문자): %E \n", 123.45);
printf("10. 간단한 표기로 출력(소문자): %g \n", 123.45);
printf("11. 간단한 표기로 출력(대문자): %G \n", 123.45);
printf("12. 문자 출력: %c \n", 'a');
printf("13. 문자열 출력: %s \n", "Hello");
printf("14. 퍼센트 문자 출력: %%\n");
printf("15. 메모리 주소 출력: %p \n", "Hello");
printf("16. long long 형식 출력: %lld\n", 0x123456789012345);
printf("================flag====================\n");
printf("1. flag 지정하지 않고 10진수로 출력: %8d \n", 123);
printf("2. flag에 -를 지정하여 10진수로 출력: %-8d \n", 123);
printf("3. flag에 +를 지정하여 10진수로 출력: %+d\n", 123);
printf("4. flag 지정하지 않고 8진수로 출력: %o\n", 123);
printf("5. flag에 #을 지정하여 8진수로 출력: %#o\n", 123);
printf("6. flag 지정하지 않고 16진수로 출력:%X\n", 123);
printf("7. flag에 #을 지정하여 16진수로 출력:%#X\n", 123);
printf("===========width와 .prec, modifier ======\n");
printf("1.flag #을 지정하여 16진수로 출력(대문자): %#X \n", 0x123456);
printf("2.flag #, modifier h를 지정하여 16진수로 출력(대문자): %#hX \n", 0x123456);
printf("3.flag #, width 12 지정하여 16진수로 출력(대문자): %#12X \n", 0x123456);
printf("4.flag #, width 012 지정하여 16진수로 출력(대문자): %#012X \n", 0x123456);
printf("5. .prec를 .3을 지정하여 부동 소수점 표기로 출력: %.3f \n", 123.456789);
printf("===========1234567890123 출력 ===========\n");
printf("1.hhd 사용: %hhd\n", 1234567890123);
printf("2.hd 사용:%hd\n", 1234567890123);
printf("3.ld 사용:%ld\n", 1234567890123);
printf("4.lld 사용:%lld\n", 1234567890123);
printf("5.jd 사용:%jd\n", 1234567890123);
printf("6.zd 사용:%zd\n", 1234567890123);
printf("7.td 사용:%td\n", 1234567890123);
return 0;
}
출력
================type====================
1. 십진수로 출력: 123
2. 부호있는 십진수로 출력: 123
3. 부호없는 8진수로 출력: 173
4. 부호없는 십진수로 출력: 123
5. 부호없는 16진수로 출력(소문자): 7b
6. 부호없는 16진수로 출력(대문자): 7B
7. 부동 소수점 표기로 출력: 123.450000
8. 지수형 표기로 출력(소문자): 1.234500e+02
9. 지수형 표기로 출력(대문자): 1.234500E+02
10. 간단한 표기로 출력(소문자): 123.45
11. 간단한 표기로 출력(대문자): 123.45
12. 문자 출력: a
13. 문자열 출력: Hello
14. 퍼센트 문자 출력: %
15. 메모리 주소 출력: 01366D4C
16. long long 형식 출력: 81985529205302085
================flag====================
1. flag 지정하지 않고 10진수로 출력: 123
2. flag에 -를 지정하여 10진수로 출력: 123
3. flag에 +를 지정하여 10진수로 출력: +123
4. flag 지정하지 않고 8진수로 출력: 173
5. flag에 #을 지정하여 8진수로 출력: 0173
6. flag 지정하지 않고 16진수로 출력:7B
7. flag에 #을 지정하여 16진수로 출력:0X7B
===========width와 .prec, modifier ======
1.flag #을 지정하여 16진수로 출력(대문자): 0X123456
2.flag #, modifier h를 지정하여 16진수로 출력(대문자): 0X3456
3.flag #, width 12 지정하여 16진수로 출력(대문자): 0X123456
4.flag #, width 012 지정하여 16진수로 출력(대문자): 0X0000123456
5. .prec를 .3을 지정하여 부동 소수점 표기로 출력: 123.457
===========1234567890123 출력 ===========
1.hhd 사용: -53
2.hd 사용:1227
3.ld 사용:1912276171
4.lld 사용:1234567890123
5.jd 사용:1234567890123
6.zd 사용:1912276171
7.td 사용:1912276171
'C & C++ > C언어 표준 라이브러리 함수' 카테고리의 다른 글
fopen, fopen_s 함수 [C언어 표준 라이브러리 함수] (2) | 2024.01.29 |
---|---|
scanf, scanf_s 함수 [C언어 표준 라이브러리 함수] (0) | 2024.01.29 |
gets, gets_s 함수 [C언어 표준 라이브러리 함수] (0) | 2024.01.29 |
getchar 함수 [C언어 표준 라이브러리 함수] (0) | 2024.01.29 |
puts 함수 (0) | 2024.01.26 |
putchar 함수 [C언어 표준 라이브러리 함수] (1) | 2024.01.26 |
STDIO.H [C언어 표준 라이브러리 함수] (0) | 2024.01.26 |
C언어 표준과 책의 기술 범위 [C언어 표준 라이브러리 함수] (0) | 2024.01.26 |