getchar 함수는 표준 입력장치를 통해 한 문자를 입력받아 반환하는데, 만약 파일의 끝을 만나거나 오류가 발생하면 EOF(End Of File)를 리턴한다.
EOF는 보통 '-1'로 정의되어 있다. 또한 getchar 함수를 포함한 대부분의 입출력 함수는 "stdio.h" 헤더 파일에 정의되어 있기 때문에 해당 헤더 파일을 포함해야 한다.
그리고 puchar 함수는 표준 출력장치에 한 문자를 출력한다.
위의 두 함수를 이용하여 간단한 프로그램을 다음과 같이 만들 수 있다.
09 행 ~ 10 행 : getchar에 의해 입력받은 문자가 EOF 아니면 10 행을 반복해서 실행한다. (키보드에서 Ctrl+Z 키를 누르면 getchar 함수는 EOF를 반환한다)
10 행 : toupper 함수는 "ctype.h" 헤더에서 제공하는 함수를 입력받은 문자가 영어 소문자인 경우 자동으로 영어 대문자로 변환하여 리턴하는 함수이다.
"ctype.h" 에서 제공하는 함수 중 문자 처리 함수에는 다음과 같은 것들이 있다.
함수 |
사용 형식 |
설명 |
toupper |
toupper(c) |
c가 영소문자일 경우, 영대문자로 변환한다 |
tolower |
tolower(c) |
c가 영대문자일 경우, 영소문자로 변환한다 |
isupper |
isupper(c) |
c가 대문자이면 1, 소문자이면 0을 반환한다 |
islower |
islower(c) |
c가 소문자이면 0, 대문자이면 0을 반환한다 |
한 행의 문자열을 입력받기 위해 gets 함수를 사용하여, 출력하기 위해 puts 함수를 사용한다. gets 함수는 파일의 끝이거나 오류가 발생하면 NULL을 반환한다.
puts 함수는 표준 출력장치로 한 행의 문자열을 출력하고 다음 줄로 넘긴다.
07 행 : 입력받은 행이 파일의 끝이 아니면 08 행을 실행한다.
서식을 갖춘 데이터의 입출력을 위해서는 별다른 특별한 함수가 필요하지 않다. printf 와 scanf를 사용할 때 특별한 서식 문자가 필요할 뿐이다.
서식 문자에는 다음과 같은 것들이 있다. 주의해야 할 점은 long 데이터 타입이나 double 데이터 타입을 입력받을 경우에는 'l'을 붙여야 한다.
scanf 함수에서 사용되는 서식 문자에는 다음과 같은 것들이 있다.
서식 문자 |
설명 |
%o %lo |
8 진수 형식 |
%d %ld |
10 진수 형식 |
%x %lx |
16 진수 형식 |
%u %lu |
부호 없는 (unsigned) 10진수 |
%f %lf |
소수점 형식 (float, double) |
%e %le |
지수 형식 (float, double) |
%g %lg |
소수점, 지수 형식 |
%c |
문자 형식 |
%s |
문자열 형식 |
08 행 : 10진수, 8진수, 16진수 형식으로 데이터를 입력 받는다.
11 행 : 각 진수로 입력받은 데이터를 10진수로 변환하여 출력 한다.
09 행 : %f 형식으로 입력받아 각각 float과 double 데이터 타입 변수에 저장한다.
14 행 : %f, %lf 형식으로 입력받아 모두 float 데이터 타입 변수에 저장한다.
위 소스에서 09 행을 보면 %f 형식을 double 데이터 타입에 저장하는데, 이는 오류가 발생하여 엉뚱한 값이 저장된다. 내부적인 데이터 타입의 차이 때문에 발생하는
것으로 이를 제대로 출력하려면 %lf 형식으로 입력받아야 한다.
printf 함수에서 사용되는 서식 문자에는 다음과 같은 것들이 있다.
서식 문자 |
설명 |
%o |
8 진수 형식 |
%d, %i |
10 진수 형식 |
%x, %X |
16 진수 형식 |
%u |
부호 없는(unsigned) 10 진수 |
%f |
소수점 형식 |
%e, %E |
지수 형식 |
%g, %G |
소수점, 지수 형식 |
%c |
문자 형식 |
%s |
문자열 형식 |
%p |
16 진수 형식 (주소) |
이런 서식 문자에 플래그, 폭, 자릿수 등의 옵션을 지정할 수 있는데 지정 형식은 다음과 같다.
%플래그 폭 자릿수 서식
플래그는 다음과 같은 종류가 있다.
플래그 |
의미 |
- |
왼쪽으로 붙여서 출력 |
+ |
수치 앞에 +/- 부호를 붙임 |
0 |
남은 공백을 0 으로 채움 |
서식 문자와 플래그를 활용하여 다음과 같은 프로그램을 짤 수 있다.
05 행 : 표준 형식 출력
06 행 : 5 자리로 맞춰 출력 (처음 두자리는 공백)
07 행 : 왼쪽으로 붙여 5 자리로 맞춰 출력
08 행 : 자리로 맞춰 출력 (나머지 4자리는 0)
09 행 : 부호를 붙여 출력
11 행 : 표준 형식 출력
12 행 : 소수점 이하 4 자리를 출력 (나머지는 반 올림)
13 행 : 전체 7 자리에서 소수점 이하는 2 자리 출력
15 행 : 표준 형식 출력
16 행 : 10 자리로 출력 (나머지 는 공백)
17 행 : 10 자리만 출력 (특수문자 및 공백 포함)
18 행 : 왼쪽으로 붙여 15 자리로 출력
19 행 : 전체 15 자리 중, 10 자리에 해당하는 문자만 출력