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);    
    }

  • 相关阅读:
    NABCD
    返回一个整数数组中最大子数组的和。
    四则运算
    返回一个二维整数数组中最大子数组的和
    返回一个整数数组中最大子数组的和
    解决方案
    测绘软件
    ImageMagick还是GraphicsMagick?
    opencv-2.4.11编译备忘
    Graphicmagick编译
  • 原文地址:https://www.cnblogs.com/mull/p/6269847.html
Copyright © 2011-2022 走看看