본문 바로가기

C언어

18. 문자 입 · 출력 함수

1) 문자 출력 함수

#include <stdio.h>

int putchar(int c);
int fputc(int c, FILE* stream);

putchar 함수는 함수 호출 시 인자로 전달된 문자를 '표준 출력 스트림(stdout)'으로 출력해 주는 역할을 하는 함수이다. 따라서 모니터에다가 하나의 문자를 출력해 주는 함수라고 할 수 있다.

fputc 함수도 putchar 함수와 같은 기능을 하는 함수인데, 다만 차이점이 있다면 "문자를 출력할 스트림을 지정할 수 있다는 특징"이 있다. 즉 putchar 함수는 모니터로만 문자를 출력하지만, fputc 함수는 모니터뿐만 아니라, 파일에도 문자를 출력할 수 있는 함수이다.(파일에 문자를 출력 한다는 의미는 파일에 문자를 저장한다는 의미이다.)

2) 문자 입력 함수
#include <stdio.h>

int getchar(void);
int fgetc(FILE* stream);


getchar 함수는 '표준 입력 스트림(stdin)'으로 부터 한 문자를 입력받아서 반환해 주는 함수이다.
따라서 키보드로부터 하나의 문자를 입력받은 함수라고 할 수 있다.

fgetc 함수도 getchar함수와 같은 기능을 하는 함수인데, 다만 차이점이 있다면 문자를 입력받을 스트림을 지정할 수 있다는 특징이 있다. 따라서 fgetc 함수를 이용하면 키보드뿐만 아니라 파일로부터도 데이터를 입력받을 수 있다.

3) EOF에 대해서

함수의 선언을 보면, 경우에 따라(오류 발생 혹은 파일의 끝에 도달했을 경우) EOF를 리턴한다고 되어있다. EOF가 실제로 지니고 있는 값은 -1이다.

fputc 혹은 putchar 함수 호출시 오류가 발생하면 이 EOF가 반환된다.
또한 fgetc 혹은 getchar 함수 호출 시에도 오류가 발생하면 EOF가 반환된다.

중요한 사실은 fgetc 나 getchar 함수가 파일의 끝에 도달하는 경우에도 EOF가 반환된다.

fgetc 함수는 파일에서 데이터를 읽어들이는 용도로 사용될 수 있는 함수다.
따라서 하나의 파일을 정해 놓고 계속해서 데이터를 읽다 보면 결국에는 파일의 끝에 도달하게 된다.

getchar 함수는 키보드로부터 데이터를 읽어들이는 함수다.
파일의 끝은 존재하지 않는다. 그러나 키보드로 부터 Ctrl + Z 키를 입력하는 경우 getchar 함수가 EOF를 반환한다. 즉, 키보드로부터 입력을 받을 경우에는 Ctrl + Z 키의 입력을 파일의 끝이라고 정의해 놓은 것이다.


int main(){	
    char ch=0;	
    while(ch != EOF){		
        ch=getchar();		
        putchar(ch);	
     }	
     printf("program 종료 \n");	

     return 0;
}

4번째 줄에서는 키보드를 통해서 입력받은 데이터가 EOF인지 확인하고 있다.

- 실행결과

12
12
34
34
^z
  program 종료




'C언어' 카테고리의 다른 글

20. 표준 입 · 출력과 버퍼(Buffer)  (1) 2011.01.02
19. 문자열 단위 입 · 출력 함수  (0) 2011.01.01
17. 스트림과 데이터의 전송  (0) 2010.12.31
16. 함수포인터  (0) 2010.12.31
15. 포인터와 const 키워드  (0) 2010.12.25