Steady Blog
5. 입력 함수( getchar() , getche(), getch(), gets(), scanf() ) 본문
* 입력함수
1. getchar()
정의 : 문자 전용 입력함수이며, 문자 한개만 읽어들인다.
=> 키보드 버퍼(KeyBoard Buffer)로 부터 입력을 받음.
- 키보드 버퍼에 존재하는 data중에서 버퍼 포인터가 위치한 곳으로부터 1byte 분량을 꺼내오고 버퍼 포인터를 1byte 만큼 이동시키는 함수이다.
- 키보드 버퍼에 Enter 값(\n)이 있을 경우에는 Enter(\n)을 문자 data로 취급하여 읽어 들이게 된다.
ex)
void test()
{
char ch1, ch2;
printf("첫번째 문자 데이터를 입력하세요.");
ch1 = getchar();
fflush(stdin); // 키보드 버퍼를 모두 비워주는 함수
printf("두번째 문자 데이터를 입력하세요.");
ch2 = getchar();
printf("첫번째 문자 = %c , 두번째 문자 = %c 입니다. \n",ch1,ch2);
}
# 입력함수는 변수와 같이 사용 해야한다. 그렇지 않다면 의미가 없다.
2. getche()
전제 조건 : 헤더 파일은 <conio.h>을 써야 한다.
정의 : 문자 전용 입력함수이며, 문자 한개만 읽어들인다 / Enter(\n)값을 입력 받지 않는 문자 입력함수.
- 키보드 버퍼를 사용하지 않아 getchar() 함수보다 속도가 빠른 문자 입력 함수이다.
ex)
void test()
{
char kor, eng;
printf("국어 점수를 입력하세요. ");
kor = getche();
printf("영어 점수를 입력하세요. ");
eng = getche();
printf("국어 = %c , 영어 = %c 입니다. \n", kor,eng);
}
3. getch()
정의 : getche()함수와 기능은 동일하다.
쓰는 이유 : 입력 문자가 보이지 않는다.
사용처 - 보안이 필요할때 입력받는 방법.
* getche()와의 차이점 : 입력한 문자가 보이는 것과 안보이는 차이.
4. gets()
정의 : get string 함수라 하며 문자열 전용 입력함수
이용 : 키보드 버퍼에 Enter 값이 있을 경우, Enter 값을 문자열 Data로 취급하여 null값으로 변환하여 문자 끝에 저장하고 키보드 버퍼 포인터를 enter값 뒤로 이동 시킴.
주의점 : 문자열 변수의 길이보다 긴 글자들을 입력하면 시스템에 문제가 발샐할 수 있음.
5. scanf()
정의 : 입력 장치로부터 숫자, 문자, 문자열 등의 데이터를 입력서식(변환문자)을 이용하여 읽어 들이는 함수.
형식 : scanf("구분 문자 및 입력 서식들", &변수, 배열일 경우 배열명);
① 구분 문자
입력 Data와 입력 Data를 구별 시켜 주기 위하여 사용하는 문자로서 구분 문자와 공백문자를 구분 문자로 취급
- 키보드 버퍼에서 Data를 읽어 들인 후에 버퍼 포인터를 엔터 값 뒤로 이동시켜 주지 않으므로 문자 변수에 Data를 받을 경우 주의하여야 한다.
(문자 데이터 입력시 enter를 문자 Data로 취급하게 된다.)
- 문자열을 입력 받을 때 Enter값을 Data로 취급하지 않는다.
- 자리수를 지정하여 입력 받을 수도 있다.
(단, 실수 값을 입력할 때 소수이하의 자리수는 지정할 수 없다.)
'Programing > C언어' 카테고리의 다른 글
7. 연산자 (연산자 우선순위, 산술, 증감,대입,관계, 논리, 비트) (0) | 2012.09.03 |
---|---|
6.입출력 함수 정리. (0) | 2012.09.03 |
4. 출력함수 (putchar, puts, printf) (0) | 2012.09.03 |
3. 스트림 (0) | 2012.09.03 |
2. Data / 변수 / 자료형 / 형변환 (0) | 2012.09.03 |