1. 형식: result= printf(서식문자열, 인자2, ... , 인자N)
2. 기능: 표준 출력 장치(터미널의 화면)에 서식문자열의 형태로 인자2부터
인자N까지의 값을 출력한다.
3. 설명
(1) C언어의 printf()함수와 동일한 함수이며 서식문자열의 종류는 (3)과 같다.
(2) 출력된 문자의 개수(byte 수)가 result에 돌려진다.
(3) 서식(format)의 종류
※ C언어와 다른점: 자료형이 맞지 않으면 형변환을 하며 형변환을 할수 없는
경우의 출력 결과는 알수 없는 값(쓰레기값)이 출력된다.
%c - 문자 출력(1byte문자) -------------> 자료형이 맞지 않으면 형변환함
%d - 2byte 정수 출력(10진수) -----------> 자료형이 맞지 않으면 형변환함
%u - 2byte 부호없는 정수 출력(10진수) --> 자료형이 맞지 않으면 형변환함
%o - 2byte 정수를 8진수로 출력 ---------> 자료형이 맞지 않으면 형변환함
%x - 2byte 정수를 16진수로 출력 --------> 자료형이 맞지 않으면 형변환함
%X - %x와 같고 영문 대문자로 출력 ------> 자료형이 맞지 않으면 형변환함
%b - 2byte 정수를 2진수로 출력 ---------> 자료형이 맞지 않으면 형변환함
%ld - 4byte 정수 출력(10진수) ----------> 자료형이 맞지 않으면 형변환함
%lu - 4byte 부호없는 정수 출력(10진수) -> 자료형이 맞지 않으면 형변환함
%lo - 4byte 정수를 8진수로 출력 --------> 자료형이 맞지 않으면 형변환함
%lx - 4byte 정수를 16진수로 출력 -------> 자료형이 맞지 않으면 형변환함
%lX - %lx와 같고 영문은 대문자로 출력 --> 자료형이 맞지 않으면 형변환함
%lb - 4byte 정수를 2진수로 출력 --------> 자료형이 맞지 않으면 형변환함
%f - 실수 출력 -------------------------> 자료형이 맞지 않으면 형변환함
%e - 실수를 지수형식으로 출력 ----------> 자료형이 맞지 않으면 형변환함
%E - %e와 같고 영문은 대문자로 출력 ----> 자료형이 맞지 않으면 형변환함
%g - %f와 %e중에서 문자수가 작은 것을
선택적으로 출력 -------------------> 자료형이 맞지 않으면 형변환함
%G - %g와 같고 영문은 대문자로 출력 ----> 자료형이 맞지 않으면 형변환함
%s - 문자열을 출력 ---------------------> 자료형이 맞지 않으면 형변환함
%p - 포인터를 출력 ---------------------> 형변환하지 않음
%P - %p와 같고 영문은 대문자로 출력 ----> 형변환하지 않음
(4) 서식(format)의 형식
% [ - | + | # | 공백 | 0 ] [ 총자리수 | * ] [.자리수2 | *] 서식문자
※ 위의 형식에서 '[ ]' 안의 내용은 '생략가능함'을 의미하고 ' | ' 기호는
'또는'을 의미한다. 그리고 '자리수2'는 %f %e일때는 '소수아래 정밀도',
%s일때는 '출력할 문자열의 문자수', %d %u %ld %lu일때는 '수치 사이에
콤마를 출력할 단위수', %o %x %X %b일때는 '수치 사이에 공백을 출력할
단위수'를 의미한다. 또한 '서식문자'는 위 (3)항의 서식의 종류에서
영문 한자(c,d,u,o,...)를 의미한다. '%'다음의 '-'는 왼쪽정렬, '+'는
부호출력, '0'은 수치일때 출력될 수치보다 '총자리수'가 큰 경우 남은
자리를 '0'으로 채운다.('#'과 '공백'은 C언어의 printf를 참고)
4. 사용예
printf(" HELLO! ");
printf("decimal=%d octal=%o hex=%x real=%f\n", 123, 123, 123, 123.4);
printf(" (%.3ld)(%#o)(%#X)(%09.4b)\n", 1234567, 123, 123, 96);
printf(" (%10.2f)(%10.1f)(%010.2f)(%-10.2f)\n", 5.67, 5.67, 5.67, 5.67);
printf(" (%10.3e)(%-10.3e)(%10.3g)\n", 1.234567, 1.234567, 1.234567);
printf(" (%s)(%10s)(%-10s)(%10.3s)\n","HELLO","HELLO","HELLO","HELLO");
printf(" (%c)(%5c)(%-5c)\n", 'A', 'B', 'C');
------------------------------ [ 출력결과 ] ------------------------------
HELLO! decimal=123 octal=173 hex=7b real=123.400000
(1,234,567)(0173)(0X7B)(0110 0000)
( 5.67)( 5.7)(0000005.67)(5.67 )
( 1.235e+00)(1.235e+00 )( 1.23)
(HELLO)( HELLO)(HELLO )( HEL)
(A)( B)(C )
|