众所周知,一个良好的密码输入程序是在用户输入密码时不显示密码本身,只回显星号。或者,在安全性要求更高的某些程序中,什么都不显示。那么,在C语言中如何实现它呢?

getc()和getchar()函数想必大家都经常用到,但它们都在输入的同时显示输入内容,并由回车终止输入。为了不显示输入内容,我们调用另外一个函数getch(),它包含在头文件中。该函数可以在输入的同时不显示输入内容,并在输入完成后不需回车而自动终止输入。与此同时,该头文件中还包含另外一个函数getche(),它和getch()功能相同,唯一的区别是输入的同时显示输入的内容。本文我们只用到getch();

一、输入密码回显星号

#include <stdio.h>
#include <conio.h>
#include <ctype.h>

#define MAX_PASSWD_LEN 16

char passwd[MAX_PASSWD_LEN + 1] = "";

char *GetPasswd()
{
    unsigned char c;
    int i = 0;
    
    while ((c=getch())!='\r')
    {
        if (i<MAX_PASSWD_LEN && isprint(c))
        {
            passwd[i++] = c;
            putchar('*');
        }
        else if (i>0 && c=='\b')
        {
            --i;
            putchar('\b');
            putchar(' ');
            putchar('\b');
        }
    }
    putchar('\n');
    passwd[i] = '\0';
    
    return passwd;
}

二、输入密码不回显

与回显星号的代码基本相同,只是去掉打印输出的代码。

#include <conio.h>
#include <ctype.h>

#define MAX_PASSWD_LEN 16

char passwd[MAX_PASSWD_LEN + 1] = "";

char *GetPasswd()
{
    unsigned char c;
    int i = 0;
    
    while ((c=getch())!='\r')
    {
        if (i<MAX_PASSWD_LEN && isprint(c))
        {
            passwd[i++] = c;
        }
        else if (i>0 && c=='\b')
        {
            --i;
        }
    }
    passwd[i] = '\0';
    
    return passwd;
}

C语言编程中实现输入密码回显星号相关推荐

  1. c语言中回显,C语言编程中实现输入密码回显星号

    C语言编程中实现输入密码回显星号 众所周知,一个良好的密码输入程序是在用户输入密码时不显示密码本身,只回显星号. 或者,在安全性要求更高的某些程序中,什么都不显示.那么,在C语言中如何实现它呢? ge ...

  2. C++输入密码回显星号

    C++输入密码回显星号 password.cpp #include <iostream> #include <string> #include "password.h ...

  3. 在Windows和Linux系统上,用C语言实现命令行下输入密码回显星号和完全隐藏密码

    本篇目录 引子 在Windows 上实现 在Linux上实现 回显星号 代码解读 运行 完全隐藏 运行 引子 在Windows系统上,当我们使用命令行和MySQL进行交互时,第一步就是要输入密码: - ...

  4. 学生管理系统 C语言 动态链表 结构体 文件操作 设置密码 输入密码回显星号

    C语言 学生管理系统代码 实现功能 功能:学生管理系统设计,每个学生信息作为一条记录,包括姓名.学号.专业.  性别.年龄.   电话.家庭住址.还可以继续拓展 系统要求实现以下功能: 1.输入功能: ...

  5. c语言实现 输入密码回显星号(删除密码去掉星号)

    相关函数介绍 getch() 所在头文件:#include< conio.h> 函数原型:int getch(void) 返回值:读取的字符的ASCII码值(整数) 功能介绍:直接读取字符 ...

  6. [心得]C语言中实现密码输入 回显星号*

    C语言为密码输入提供了一函数getpass(); #include <stdio.h> #include <unistd.h> int main() { char *passw ...

  7. c语言中错误executing,C语言编程中常见问题解读.doc

    C语言编程中常见问题解读 为什么vc6打开的文件却不能编译1 为什么一个vc6工程中有两个main函数不能编译成功?我想写两个程序怎么办?2 为什么v6不能编译程序,生成信息说compile和link ...

  8. 《C语言解惑》—— 第一篇 C语言编程中的对与错

    本节书摘来自华章出版社<C语言解惑>一 书中的第1章,第1.1节,作者:刘振安 刘燕君,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 第一篇 C语言编程中的对 ...

  9. 请描述定时器初值的计算方式_单片机C语言编程中定时器初值计算的两种方法...

    单片机C语言编程中,定时器的初值对于初学者真的是比较不好计算,因此我总结了以下几种方法. 第1种方法: #define FOSC 11059200L //晶振的频率 #define TIMS (655 ...

最新文章

  1. yd的拔钉子之路之 POI 2017
  2. vbs病毒分析神技——使用VS2017调试vbs脚本
  3. 关于sql中去换行符的问题
  4. 已经被处理的消息不能丢
  5. spring 异常捕获异常_跟踪异常–第5部分–使用Spring进行计划
  6. 还有人不知道什么是AndroidX的吗?文末领取面试资料
  7. Java设计模式学习总结(12)——结构型模式之外观模式
  8. 大数据_Flink_Java版_数据处理_流处理API_Sink操作_把数据存储到ElasticSearch---Flink工作笔记0040
  9. HTTP之一:http协议简介(3)
  10. PHP学习笔记--函数
  11. opengl 遇到的基础问题
  12. 连接服务器打印机文件名无效,excel服务器-办公室常识——共享服务器文件报错,共享打印机无法打印的解决办法(解决word、excel不能打印))...
  13. R语言McSpatial_R语言天气可视化应用
  14. 微积分基础-极限,导数,反导数
  15. QT开发应用程序(17)-- 读写XLS文件
  16. CAAI名誉理事长李德毅院士谈机器的生命观
  17. JAVA编写元音字母(Switch语句)
  18. 企业文件分享/共享有哪些安全方式
  19. C# 里弹出“确定”“取消”对话框
  20. 关于socket长连接的心跳包

热门文章

  1. 信心,是成功的第一秘诀
  2. [预测] 聊聊未来的系统发展趋向
  3. Slopehelper农业机器人趋向于陡峭的葡萄园
  4. JavaScript解答罗志祥多人运动题
  5. 不仅霸占双眼,屏幕正在让智能音箱进入下一版本
  6. 微信小程序NFC读写工具
  7. 电子商务系统测试软件相关文档,电子商务系统软件测试文档
  8. anaconda3全局模式
  9. 数据结构-红黑树插入结点示例
  10. video标签在谷歌浏览器中隐藏下载/倍速/画中画