반응형
출처 : http://www.joinc.co.kr/modules/moniwiki/wiki.php/article/termios#AEN48


echo_off.c
#include <stdlib.h>
#include <stdio.h>

#include <termios.h>
#include <string.h>

static struct termios stored_settings;
void echo_off(void)
{
    struct termios new_settings;
    tcgetattr(0, &stored_settings);
    new_settings = stored_settings;
    new_settings.c_lflag &= (~ECHO);
    new_settings.c_lflag &= (~ICANON);
    tcsetattr(0,TCSANOW, &new_settings);

    return ;
}

void echo_on(void)
{
    tcsetattr(0, TCSANOW, &stored_settings);
    return ;
}

void get_pass(char *pass)
{
    char buf;
    int i=0;

    printf("Passwd : ");
    echo_off();
    while ((buf=getc(stdin)) != '\n')
    {
        pass[i] = buf;
        printf("%s", "*");
        i ++;
    }
    echo_on();
}

int main()
{
    char pass[16];
    memset(pass, 0x00, 16);
    get_pass(pass);
    printf("\nYour input : %s\n", pass);
    return 1;
}
			
위의 프로그램은 사용자 패스워드를 입력받는 일을한다. 패스워드의 경우 화면에 바로 출력되면 안됨으로, 터미널의 라인 출력 특성을 "반향 끔" 으로 설정하고 키입력을 받아들이도록 했다. 그리고 사용자 키입력을 "*" 로 대체 시켜서 화면에 출력하도록 해서 사용자 패스워드를 입력 받도록 만들었다.
반응형

'C & C++ 관련' 카테고리의 다른 글

strtok() 문자열을 문자로 자르기  (0) 2008.10.15
C언어에서 \n 과 \r 의 차이는 무엇인가요  (2) 2008.08.17
가변인수 연습 va_  (0) 2008.08.15
Posted by Real_G