기본 입출력 - 출력
다루는 내용
- 기본 출력
- 출력 포맷 사양자
- 버퍼에 출력
여기에서는 응용에 데이터를 화면(stdout)에 출력하는 것에 관련된 함수에 대해서 소개를 하기로 하자. 다른 파일에 출력하는 것에 대해서는 별도의 항목을 통해 설명하기로 하겠다.
int putchar(int ch);
한 개의 문자를 출력하는 함수로 putchar를 제공하고 있다.
함수 원형(signature)을 보면 입력 매개변수로 int형을 받고 리턴 타입이 int라는 것을 알 수 있다.
하지만 입력 매개변수 ch에 있는 하위 1바이트를 제외한 나머지 값은 출력에 반영이 되지 않는다.
출력값은 화면에 출력된 문자에 대한 ASCII CODE값을 반환한다.
Look & Feel & Think 다음을 보면 putchar함수가 어떠한 연산 동작을 하는지 알 수 있을 것이다. (함수를 C언어 사용자에 의해 피 연산자와 연산 행위를 정위하는 문법이라는 측면에서 연산 동작이라 흔히 얘기들 한다.) 다음을 보면 C언어에서 문자 리터럴 상수는 기본 타입이 int형이라는 것을 알 수 있다. 물론, 컴파일러는 문자 리터럴 상수값이 0xff미만인 경우에는 손실되는 값이 발생하지 않기 때문에 아무런 경고도 발생하지 않는다. 이를 통해서도 문자 리터럴 상수는 기본 타입이 int형이라는 것을 알 수 있다.
int puts(const char * str);
한 개의 문자열을 stdout에 보내어 하나의 stream이 되어 화면에 출력을 하게 된다.
문자열을 stream로 변환을 하기 때문에 입력된 문자열 이외에 개행문자가 추가로 화면에 출력하게 된다.
반환값은 정상적일 경우에 0이 반환되며 그 외에는 EOF(-1)이 반환된다.
int printf(const char * format, ...);
printf함수 사용자가 원하는 포맷에 맞게 출력을 해 주고 화면에 출력된 문자수를 반환하는 함수이다.
특이한 사항은 함수 원형을 보면 ... 부분이 보이는데 가변 인자 리스트가 올수 있다는 것이다.
다음은 포맷 사양자에 대한 테이블이다.
%[flags][width][.prec][F|N|h|l] type | |
type |
출력될 포맷 |
d |
십진수로 출력 |
i |
부호있는 십진수로 출력 |
o |
부호없는 팔진수로 출력 |
u |
부호없는 십진수로 출력 |
x,X |
부호없는 16진수로 출력 |
f |
부동 소수점 표기로 출력 |
e,E |
|
g,G |
부동 소수점 혹 지수형중 간단한 형식으로 출력 |
c |
문자형으로 한 문자 출력 |
s |
문자열 출력 |
% |
%문자 출력 |
p |
메모리 주소 출력 near:YYYY far: XXXX:YYYY |
| |
flag |
설명 |
none |
오른쪽 정렬, 빈자리는 공백 혹은 0으로 채움 |
- |
왼쪽 정렬 |
+ |
부호를 표기 |
blank |
음수일 경우에만 부호를 표기 |
# |
출력할 숫자를 8진수,10진수, 16진수인지 확인할 수 있게 8진수와 16진수일 경우에는 0, 0x문자를 앞에 첨가해 줌 |
| |
width |
설명 |
n |
최소 n개의 자리를 출력함, 출력 문자가 n개보다 적을 시에 빈 공간은 공백으로 채워짐 |
0n |
최소 n개의 자리를 출력함, 출력 문자가 n개보다 적을 시에 빈 공간은 0으로 채워짐 |
| |
.prec |
설명 |
.0 |
소수일 경우에 소수점 이하는 생략 |
.n |
소수점 이하는 최대 n자리만 출력 |
| |
Modifier |
설명 |
F |
far 포인터 XXXX:YYYY |
N |
Near 포인터 YYYY |
h |
short int |
l |
long int, double |
L |
long double |
|
Look & Feel & Think 다음은 가변 인자리스트를 사용하는 모습에 대한 예이다. 충분히 테스트를 통해 사용이 가능하다고 생각했을 때 사용하기 바란다.
|
Look & Feel & Think 기본 입출력이 내부적으로 bufferd I/O를 사용하고 있음을 이전 항목에서 언급한 바가 있다. 또한, 기본 입출력 라이브러리에는 사용자 버퍼에 포맷에 맞게 출력하여 원하는 포맷의 문자열을 형성할 수 있게 해주는 함수를 지원해 주고 있다. 다음은 그러한 함수 중 하나인 sprintf의 사용하는 예를 보여주고 있다.
|
'언어 자료구조 알고리즘 > C 언어 문법' 카테고리의 다른 글
23.배열 (0) | 2009.08.19 |
---|---|
22. 제어문 - 반복문 (0) | 2009.08.19 |
21.제어문 - 선택문 (0) | 2009.08.19 |
20. 제어문 - 조건문 (0) | 2009.08.19 |
19. 기본입출력 - 입력 (0) | 2009.08.19 |
17.기본 입출력 개요 (0) | 2009.08.19 |
16. 지시/주소/인덱스/간접연산자 (0) | 2009.08.19 |
15. 비트/ 쉬프트 연산자 (0) | 2009.08.19 |
14. 비교/논리 연산자 (0) | 2009.08.19 |
13. 대입 연산자 (0) | 2009.08.19 |