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/)