10.4.1 비밀번호 입력받기
여기서는 비밀번호를 ‘skehzheld’(한글 ‘나도코딩’을 영문 상태에서 입력)라고 지정했다고 가정하고 사용자에게 비밀번호를 입력받는 부분부터 작성하겠습니다.
➊ 비밀번호를 입력받아 저장할 password 배열을 선언합니다. 문자로 인식하도록 char형으로 선언하고 크기는 20으로 설정합니다.
➋ 비밀번호를 입력할 때 다른 사람이 알아볼 수 없도록 *로 입력되는 효과를 내겠습니다. 일종의 마스킹(masking, 은폐) 효과인데, 이렇게 작업하려면 한 자씩 입력받아야 합니다. 이를 위해 문자형 변수 c를 선언합니다.
➌ 한 자씩 입력받은 비밀번호는 password 배열의 인덱스 i 위치에 저장합니다. 이를 위해 정수형 변수 i를 선언하고 0으로 초기화합니다.
➍ 프로그램 시작을 표시하기 위해 안내 문구를 출력합니다. 비밀번호는 최대 20자리로 지정하고 안내 문구에도 표시합니다.
➎ 비밀번호를 한 자씩 입력받기 위해 _getch()함수를 사용합니다. _getch()함수로 입력받은 값은 앞에 선언한 변수 c에 저장합니다. 이때 사용자가 입력할 비밀번호 길이를 모르므로 이 부분은 while 문 안에 작성합니다. 그리고 _getch()함수를 사용할 수 있게 conio.h 파일을 헤더 파일 부분에 추가합니다.
Note getchar( ) 함수와 _getch( ) 함수
9장에서 getchar() 함수로 숫자를 입력받은 적이 있습니다. _getch() 함수는 getchar() 함수와 무엇이 다를까요? getchar() 함수는 키보드로 원하는 키를 입력한 후 반드시 Enter를 눌러야 작동합니다. 반면에 _getch() 함수는 키를 입력하면 바로 작동합니다. 예를 들어, getchar() 함수는 a를 입력한 후 Enter를 눌러야 값이 저장되지만, _getch() 함수는 a를 입력한 순간 바로 저장됩니다.
그림 10-6 문자 입력 시 getchar( ) 함수와 _getch( ) 함수의 차이