带星号的密码输入
来源:互联网 发布:淘宝一分钱有信誉吗 编辑:程序博客网 时间:2024/05/14 22:45
在软件开发中,往往会遇到要求用户输入密码的情况。出于对密码的保密,输入的字符是不会显示到屏幕上的。例如,在登录Linux系统时,输入用户名后,输入的密码是不显示的。可用getch()这个函数,但是在linux文件下,此函数所在的头文件为curses.h。
curses库是由柏克莱大学的Bill Joy及Ken Arnold所开发的。当时开发curses库的目的是为了解决程序对于不同终端的兼容性。curses库用于处理Linux/UNIX上的光标移动及屏幕显示问题。考虑到curses库的复杂性,这里只是简单地介绍一下curses库的使用。
使用curses库中的函数前,需要进行必要的初始化工作。程序需要使用initscr函数来开启curses模式,在结束前调用endwin函数来关闭curses模式。代码如下:
#include <curses.h>
int main(int argc,char* argv[]){
initscr();
…
endwin();
}
在实际使用中,出于方便的目的,往往把一些初始化的动作放置在初始化函数中,以方便调用。具体代码如下:
void initial()
{
initscr();
cbreak();
nl();
noecho();
intrflush(stdscr,FALSE);
keypad(stdscr,TRUE);
refresh();
}
#include<stdio.h>#include<curses.h>#include<unistd.h>#include<stdlib.h>void init(){ initscr(); cbreak(); //调用cbreak之后,除了“Del”和“Ctrl”键之外,接受其他字符的输入 nl();//输出时,换行是否作为回车字符 noecho();//是否立即显示 intrflush(stdscr,FALSE);//若为TRUE,可以加快中断 keypad(stdscr,TRUE);//允许使用键盘上的特殊字符 refresh();//重新绘制屏幕内容,在调用initsr函数后,第一次调用refresh函数会清除题目显示}int getpasswd(char *passwd,int size){ int c; int n = 0; printw("please input password:"); while((c != '\n')&& (n < (size-1))) { c = getch();if(c != '\b'){ printw("*");}/*if( c == '\b'){ printw("a\n"); passwd[n--] = '\0';}
*/ }
passwd[n] = '\0'; return n;}int main(){ char passwd[20]; int n; init(); n = getpasswd(passwd,sizeof(passwd)); printw("\nyour password is %s\n",passwd); refresh(); endwin(); return 0;}
但是这段程序是有问题的,只能输入然后看到的是星号,但是按了后退键并没有什么反应,还有不能把输入的函数的原型输出来。。
0 0
- 带星号的密码输入
- inputbox输入带星号的内容
- Python实现星号遮掩的密码输入
- 控制台下星号密码输入的实现
- 带*密码的输入
- 输入密码显示星号
- 输入密码回显星号
- 输入密码以星号显示
- 挺好玩的 控制台输入密码显示星号
- 星号的输入
- 密码的输入带*号,可删除
- 密码的输入带*号,可删除
- 控制台程序输入密码时显示星号
- datagridview中输入密码,显示星号*
- C语言实现 输入密码显示星号******
- c++输入密码以星号代替
- 输入密码回显星号 -- C语言
- Linux终端下输入密码显示星号
- 创建单链表并赋值,要求遍历能输出1~9
- stm32时钟
- Mac下Android Studio常用快捷键
- 从源码来看Fragment的生命周期(一)
- 目标一
- 带星号的密码输入
- 测试需要做什么
- 如何学习黑客技术?
- 弹出框及页面刷新
- 什么是Web?及web服务器原理
- 驱动程序的Makefile
- HDU-3768-Shopping
- 全局异常解析器
- selenium 网页元素定位方法学习笔记