Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C 언어에서 비밀번호 입력 시 문자 대신 * 별표 출력하기

문제 개요

이 문제에서는 비밀번호 문자열이 주어졌을 때, 실제 문자 대신 *(별표)를 화면에 출력하는 것이 목표입니다. 터미널에서 비밀번호를 입력할 때 보안을 위해 입력 내용이 그대로 노출되지 않고 별표로 표시되는 것과 같은 원리입니다.

예시

입력: 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 : ********

코드 설명

위 코드의 동작 과정을 살펴보겠습니다.

  1. 문자열 선언: 크기가 50인 char 배열에 "password"라는 비밀번호를 저장합니다.
  2. 길이 계산: strlen() 함수를 호출하여 비밀번호의 길이(8)를 구합니다.
  3. 별표 출력: for 반복문을 통해 길이만큼 반복하며, 각 반복마다 printf("*")로 별표 하나씩 출력합니다.

결과적으로 "password"라는 8자리 비밀번호는 화면에 ********로 표시되며, 실제 문자는 외부에 노출되지 않습니다.

마무리

이 방법은 콘솔 기반 프로그램에서 비밀번호 입력을 가릴 때 유용하게 활용될 수 있습니다. 실무에서는 사용자의 키 입력을 실시간으로 받아 별표로 출력하는 방식(getch() 등 활용)으로 확장할 수도 있습니다.