문제 개요
이 문제에서는 비밀번호 문자열이 주어졌을 때, 실제 문자 대신 *(별표)를 화면에 출력하는 것이 목표입니다. 터미널에서 비밀번호를 입력할 때 보안을 위해 입력 내용이 그대로 노출되지 않고 별표로 표시되는 것과 같은 원리입니다.
예시
입력: password 출력 ********
해결 방법
이 문제는 매우 간단하게 해결할 수 있습니다. 먼저 입력받은 비밀번호의 길이를 구한 뒤, 문자열을 한 글자씩 순회하면서 각 문자 대신 별표(*)를 출력하면 됩니다.
핵심 아이디어는 다음과 같습니다:
- 비밀번호 문자열의 길이를
strlen()함수로 계산합니다. - 반복문을 사용하여 길이만큼 별표(*)를 출력합니다.
- 실제 비밀번호 문자는 화면에 나타나지 않습니다.
구현 코드
아래 프로그램은 위 해결 방법을 C 언어로 구현한 예제입니다.
#include <stdio.h>
#include <string.h>
int main() {
char password[50] = "password";
int length = strlen(password);
printf("Password : ");
for(int i = 0; i<length; i++){
printf("*");
}
return 0;
}실행 결과
Password : ********
코드 설명
위 코드의 동작 과정을 살펴보겠습니다.
- 문자열 선언: 크기가 50인 char 배열에 "password"라는 비밀번호를 저장합니다.
- 길이 계산:
strlen()함수를 호출하여 비밀번호의 길이(8)를 구합니다. - 별표 출력: for 반복문을 통해 길이만큼 반복하며, 각 반복마다
printf("*")로 별표 하나씩 출력합니다.
결과적으로 "password"라는 8자리 비밀번호는 화면에 ********로 표시되며, 실제 문자는 외부에 노출되지 않습니다.
마무리
이 방법은 콘솔 기반 프로그램에서 비밀번호 입력을 가릴 때 유용하게 활용될 수 있습니다. 실무에서는 사용자의 키 입력을 실시간으로 받아 별표로 출력하는 방식(getch() 등 활용)으로 확장할 수도 있습니다.