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

  • 相关阅读:
    不弹出提示直接关闭页面
    orcale表解锁
    序列化和反序列化
    js 实现post传参
    简易实现 instanceOf
    简易实现virtualdom
    react中setState同步、异步问题
    CMake Qt 配置 OpenCV
    VS执行时打开cmd
    VS2019+Qt5.15.2环境配置
  • 原文地址:https://www.cnblogs.com/mull/p/6269847.html
Copyright © 2011-2022 走看看