입출력 함수
키보드로부터 데이터를 입력받는 대표적인 입력 라이브러리 함수,
그리고 화면에 문자를 출력하는 기본적인 출력 라이브러리 함수를 알아보는 시간을 갖겠습니다.
버퍼드 입력
키보드로 입력한 자료는 우선 버퍼에 저장된다는 건 상식이죠.
이후에 엔터로 입력되면 그제서야 응용 프로그램에 받아들여지는 입력 형태, 그 자체를 버퍼드 입력이라고 합니다.
Type "Kim" | Buffer | |
키보드 → | Kim | 프로그램 |
→ 엔터 후 입력됨 | ↑ |
이런 식으로 입력되는 형태는 입력된 자료가 잘못된 경우에는 수정이 가능하다는 장점이 있습니다.
단일 문자를 입력받는 함수인 getchar( ), scanf( ) 나 문자열을 입력받는 함수인 gets( )가 이런 예라고 할 수 있습니다.
- getchar() 라이프러리 함수
- 형식 : int getchar(void) ;
키보드로부터 단일 문자를 입력받아 입력된 문자의 아스키코드값을 반환하는 함수입니다.
stdio.h 헤더 파일에서 찾을 수 있습니다.
getchar() 함수는 함수의 자료형이 int에서알 수 있는 것처럼 문자를 반환할 때 문자값에 해당하는 아스키코드값을 반환합니다.
특히나 코드값이 -1인 CTRL-Z 키의 입력은 파일의 끝을 가르키고 프로그램에서는 코드값 대신에 End OF File, 즉 EOF로 정의됩니다.
따라서 getchar() 함수가 문자를 입력받는 함수라고 하더라도 EOF 입력을 구별하기 위해서 입력받은 문자를 할당하는 변수는 반드시 정수 변수로 선언해야하는 규칙이 있는겁니다.
- putchar() 라이브러리 함수 (출력 함수)
- 형식 : int putchar(int ch) ;
단일 문자를 화면에 출력하는데 사용되는 라이브러리 함수입니다.
함수의 형식에서 보는 것처럼 화면에 출력하려는 문자를 인수로 표현하는 특징이 있습니다.
- scanf() 라이브러리 함수
- 형식 : int scanf(const char *format[,address...]) ;
키보드로부터 단일 문자나 정수를 입력받아서 반환하는 함수입니다.
stdio.h 헤더 파일로 포함되기도 합니다.
따라서 키보드로부터 문자뿐 아니라 숫자도 입력을 받으므로 함수에서 사용되는 인수는 입력받는 데이터의 자료형을 지정하는 형식 지정 문자열 (%c, %d, %f) 같은 입력받는 데이터를 할당하는 변수들의 주소로 구성됩니다.
- gets() 라이브러리 함수
- 형식 : char *gets(char *str) ;
gets() 함수는 키보드로부터 0 or 1개 이상의 문자로 구성되는 문자열을 입력받는 함수입니다.
stdio.h 파일에 포함되는 것은 동일합니다.
인수 char *str에서 str은 문자열을 저장하는 기억 공간의 포인터를 의미하기 때문에 인수의 변수는 배열 이름 아니면 포인터로 정의되어야 합니다.
게다가 형식 char *gets(char *str) ; 에서 gets() 함수앞에 *의 의미 gets() 함수가 키보드로부터 문자열을 입력받으면, 부르는 함수 gets()에 문자열 중에 첫 번째 문자를 저장하는 기억 공간의 주소를 반한하는 것을 의미합니다.
이렇게 gets() 함수는 포인터를 알아야 이해가 됩니다. 별도의 공부가 필요합니다.
버퍼되지 않는 입력
앞에서와는 다르게 버퍼를 거치지 않고 바로 프로그램에 받아들여지는 입력형태를 말합니다.
어떤 문자를 입력받기 위해서 문자 다음에 엔터를 입력해야하는 방식이 아니라 문자 입력하는 순간 즉시 입력된 문자를 읽어서 그 문자의 아스키코드값을 반환합니다.
Type "Kim" | ||
키보드 | → 다이렉트 입력 → | 프로그램 |
이련 형태는 입력된 자료는 수정이 불가능합니다.
하지만 즉시 입력된 문자가 읽혀지기 때문에 처리속도가 빠르다는 장점이 있습니다.
단일 문자를 입력받는 getch( ), getche( ) 함수가 여기에 해당됩니다.
- getch() 라이브러리 함수
- 형식 : int getch(void) ;
키보드 문자 's'를 입력받기 위해서 getchar() 함수는 문자 's'와 엔터를 입력해야 문자 's'를 읽어서 아스키코드값을 반환합니다.
하지만 getch() 함수는 키보드에서 문자를 입력하면 바로 읽어서 코드값을 반환합니다.
이 함수는 입력된 문자를 화면에 출력하지 않는 함수이고 conio.h 헤더파일에 포함된다는 차이점이 위와 뚜렷하게 구분됩니다.
- getche() 라이브러리 함수
- 형식 : int getche(void) ;
getch() 함수와 같이 단일 문자를 입력받는 즉시 아스키코드값을 반환하는 점이 동일하지만 입력된 문자를 화면에 출력한다는 차이가 있습니다.
conio.h 헤더 파일에 포함된다는 것은 동일합니다.
'IT > C 언어' 카테고리의 다른 글
C언어 기억 클래스의 종류 4가지 (0) | 2020.08.21 |
---|---|
C언어 - 함수의 정의와 함수 작성방법 (0) | 2020.08.14 |
C언어 연산자 종류와 우선순위 (왕초보 개념잡기) (0) | 2020.08.13 |
C언어 변수의 정의와 종류 알아보기 (0) | 2020.08.13 |
C 언어의 고유한 10가지 특징 (0) | 2020.08.07 |
댓글