• 用C语言 实现输入密码回显*号


    //linux与windows下都行,支持用户输入BACKSPACE时可以删除之前输入的,输入ENTER时,打印出密码

    #include <stdio.h>
    #include <string.h>
    #include <assert.h>

    #if _WIN32  //编译开关
    #include <conio.h>

    #define BACKSPACE 8
    #define ENTER 13
    #endif

    #if unix  //编译开关
    #include <termios.h>
    #include <unistd.h>

    #define BACKSPACE 127
    #define ENTER 10
    #endif

    #define MAX_SIZE 20

    #if unix
    int getch()
    {
     int ch=0;
     struct termios old_termios, new_termios;

     assert(0==tcgetattr(STDIN_FILENO, &old_termios));   //获取终端的相关参数
     memcpy(&new_termios, &old_termios, sizeof(new_termios));

     new_termios.c_lflag &= ~(ECHO | ICANON);     //ECHO 显示输入字符 ICANON 使用标准输入模式

     assert(0==tcsetattr(STDIN_FILENO, TCSANOW, &new_termios)); //设置终端参数
     ch=getchar();

     return ch;
    }
    #endif

    void inputdata(char* psrc)
    {
     int i=0;
     
     while(i<MAX_SIZE && ((psrc[i]=getch())!=ENTER))
     {
      if(psrc[i]==BACKSPACE)
      {
       psrc[i]='\0';
       psrc[--i]='\0';
       putchar('\b');
       putchar(' ');
       putchar('\b');
       i--;
      }
      else
       putchar('*');
      i++;
     }
     psrc[i]='\0';
    }

    int main(int argc, char* argv[])
    {
     char password[MAX_SIZE];
     
     inputdata(password);
     putchar('\n');
     puts(password);
     
     return 0;
    }

  • 相关阅读:
    软件工程第一次作业--IT女的进化
    软件工程第五次作业
    软件工程第四次作业
    软件工程第三次作业
    软件工程第二次作业
    v0.1beta
    第二次结对作业
    软件工程结对作业
    软件工程第三次作业
    软件工程第二次作业
  • 原文地址:https://www.cnblogs.com/ccmfc/p/1918363.html
Copyright © 2020-2023  润新知