더북(TheBook)

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( ) 함수의 차이

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.