언어 자료구조 알고리즘/C 언어 문법

18. 기본 입출력 - 출력

언제나휴일 2009. 8. 19. 05:47
반응형

기본 입출력 - 출력

 

다루는 내용

   - 기본 출력

   - 출력 포맷 사양자

   - 버퍼에 출력

 

여기에서는 응용에 데이터를 화면(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