getch

  • 하나의 문자만 입력 받는다. scanf는 문자와 숫자 입력 후에 Enter 키를 입력해야하지만 getch 는 누르는 하나의 문자만 조사하므로 Enter를 누르지 않아도 된다. 
    하지만 입력 즉시 검사 하기 때문에 키보드를 누르게 되면 입력을 취소 할 수 없다.

    즉, 입력 즉시 검사를 하기 때문에 버퍼에 담아둘 필요가 없고 바로 결과 값이 아래 예시의 변수select에 바로 들어간다.

  • <예시>
    printf("게임을 계속 하시겠습니까?(Y/N");
    int select = getch();
    위와 같이 사용하면 입력된 값이 있으면 그 해당 하는 키 값(ASCII 코드)을 리턴한다.
    char select = getch();
    형태로 사용할 경우에는 해당 문자가 리턴된다.

  • getch(); 만 사용할 경우에는 아무키가 눌릴 때 까지 입력 대기 상태가 되므로 
    게임에서 Press Any Key 와 같은 형태로 사용이 가능하다.

  • 종료 인식 시에는 '\r' 로 인식한다.


getche 

  • getch와 크게 다르지는 않다. 하지만 getche의 경우 getch + echo 의 합성된 형태로 입력과 동시에 입력된 값을 출력해 준다. 

  • <예시>
    char ch = getche();
    printf("%c",ch);
    위와 같은 경우에 'A'를 입력할 경우 바로 'AA' 두개가 찍히게 된다.

  • 종료 인식 시에는 '\r' 로 인식한다. 또한 위의 getch와 getche의 경우에는 conino.h 를 꼭 include 시켜야 한다. console and port Input / Output 의 약자이며 윈도우즈에서만 쓸 수 있는 비표준 함수들이 들어 있습니다. 


getchar

  • getchar() 한글자를 입력받은 함수이이지만, 입력버퍼를 사용하므로, Enter가 입력될 때까지 입력을 계속 받아 버퍼에 담아두고, 엔터가 들어오면 입력을 종료하고 버퍼 중에서 가장 첫번째 글자를 리턴한다. 

  • <예시>
    char ch = getchar();
    printf("%c\n",ch);
    입력을 TestA 할 경우 출력을 하면 T 하나만 출력되게 된다.

  • 종료 인식 시에는 '\n'로 인식한다. 윈도우즈에서 쓸 수 있는 표준 입출력 함수에 포함된다.


putchar

  • 표준 문자 출력 함수로 원형은 아래와 같다.
    int putchar ( int character );
    인자는 표준 출력에 쓸 문자. 이 때 문자는 int 형태로 형변환되어 전달.
    오류가 없으면 표준 출력에 씌여진 문자가 반환, 오류가 발생 시 EOF 가 반환되고
    오류 표시자가 설정된다.

  • <예시>
    char ch = 'A';
    putchar(ch);
    위의 소스에서 보듯 출력을 하게 되면 'A'라는 값만 출력된다.


puts

  • 표준 출력에 문자열을 사용한다. 함수의 원형은
    int puts ( const char * str );
    자동으로 '\n'도 추가로 쓴다. 즉, 문자열에 \n이 마지막에 없더라도 추가가 된다.
    인자 str은 표준 출력에 쓰여질 문자열
    성공적으로 쓰이면 음이아닌 값이 리턴된다. 오류가 발생하였다면 EOF를 리턴

  • <예시>
    char str[] = "Welcome to Hell!!";
    puts(str);
    위 소스를 컴파일 후 실행하게 되면 
    Welcome to Hell!! 이 출력된 후 개행("\n")된다.

결론

비교

getchar()

 getche()

getch() 

버퍼 사용

O

X

X

화면 표시

O

O

X

종료 인식

\n

\r

\r


puts 는 문자열 putch 는 문자만 출력하게 된다.

출처 : C언어파트(http://kcoder.tistory.com/ and http://itguru.tistory.com/)


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

연산자  (0) 2016.03.14
제어문  (0) 2016.03.13
printf 서식문자  (0) 2016.03.10
변수와 상수  (0) 2016.03.08
주석  (0) 2016.03.08

+ Recent posts