Steady Blog

5. 입력 함수( getchar() , getche(), getch(), gets(), scanf() ) 본문

Programing/C언어

5. 입력 함수( getchar() , getche(), getch(), gets(), scanf() )

우유먹고쑥 2012. 9. 3. 23:20

* 입력함수

 

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로 취급하지 않는다.

- 자리수를 지정하여 입력 받을 수도 있다.

(단, 실수 값을 입력할 때 소수이하의 자리수는 지정할 수 없다.)