zoukankan      html  css  js  c++  java
  • 输入密码串回显*号


    #include <stdio.h>
    #include <termios.h>

    static struct termios stored_settings;
    static void set_keypress(void)
    {
        struct termios new_settings;

            //存储旧的模式
        tcgetattr(0,&stored_settings);
        
        new_settings = stored_settings;

        /* Disable canonical mode, and set buffer size to 1 byte */
        new_settings.c_lflag &= (~ICANON);    // 不使用标准模式,即取消行缓冲
        new_settings.c_cc[VTIME] = 0;
        new_settings.c_cc[VMIN] = 1;
        new_settings.c_lflag &= ~ECHO;
        
        tcsetattr(0, TCSANOW, &new_settings);
        return;
    }
    static void reset_keypress(void)
    {
        tcsetattr(0,TCSANOW,&stored_settings); // 恢复旧模式
        return;
    }

    /** readpasswd */
    void readpasswd( char* buffer, int size)
    {
        char c;
        int cnt = 0;        
        set_keypress();
        while ((c = getchar()) != ' ') {
            putchar('*');
            buffer[cnt++] = c;
            if (cnt >= size-1)
                break;
        }
        reset_keypress();
        buffer[cnt] = 0;    
    }

    int main(int argc, char* argv[])
    {
        char buffer[100];
        readpasswd(buffer, 100);
        printf("input password:%s ", buffer);    
    }

  • 相关阅读:
    Assembly之instruction之CMP
    Assembly之Instruction之Byte and Word
    MSP430之section(1)
    MSP430之software development flow
    openMSP430之Custom linker script
    CDC之Synchronizers
    CDC之Metastability
    Embedded之Stack之三
    Embedded之Stack之二
    Embedded之Stack之一
  • 原文地址:https://www.cnblogs.com/mull/p/6269847.html
Copyright © 2011-2022 走看看