Linux C : 登录密码星号 * 显示,包含能回退 backspace
来源:互联网 发布:对称矩阵 特征向量 编辑:程序博客网 时间:2024/05/22 10:43
在linux 下需要登录的一个小程序,不明文显示密码,而用星号*代替,并能让用户能回退。。。
网上差了些相关资料,特此总结下。。。。。。。
//////////////////// lee.h //////////////////////////// 需要包含的头文件 lee.h
#ifndef _LEE_H_ //Linux platform
#define _LEE_H_
#include <termio.h>
#ifndef STDIN_FILENO
#define STDIN_FILENO 0
#endif
int getch(void)
{
struct termios tm, tm_old;
int fd = STDIN_FILENO, c;
if(tcgetattr(fd, &tm) < 0)
return -1;
tm_old = tm;
cfmakeraw(&tm);
if(tcsetattr(fd, TCSANOW, &tm) < 0)
return -1;
c = fgetc(stdin);
if(tcsetattr(fd, TCSANOW, &tm_old) < 0)
return -1;
return c;
}
#else //WIN32 platform
#include <conio.h>
#endif
//------------------------------------------分割符-------------------------------------------------------------------------------------
//test.c
#include "lee.h"
#include ……//你自己的头文件
#define BACESPACE 127
#define ALARM 7
#define maxline 200
void get__pwd(char *buffer) //get pass word,putchar '*',replace of every char user input
{int i=0;
char letter;
char ch=getchar();
while(( i < maxline ) && (letter != '\r' ))
{
letter = getch();
if(letter==BACKSPACE) //when backspace
{
if(i>0)
{
buffer[i--]='\0';
// putchar(BACKSPACE);
putchar('\b');
putchar(' ');
// putchar(BACKSPACE);
putchar('\b');
continue;
}
else putchar(7); //alarm
}
else if( letter != '\r')
{
buffer[i++]=letter;
putchar('*');
}
}
buffer[i]='\0';
}
标红,注意的点:
1. BACKSPCE的ascii 码是跟终端属性有关的,对于ubuntu而言 ,打开终端的配置属性,找到兼容性选项,对于BACKSPACE,设为Ascii DEL ,则此时为127
2. 之前putchar(BACKSPACE)总是把0x7f给输出来了,达不到预期效果,改为putchar('\b') 就可以了
- Linux C : 登录密码星号 * 显示,包含能回退 backspace
- C语言中将密码显示成星号
- C语言实现 输入密码显示星号******
- C语言模拟密码输入(显示星号)
- Linux终端下输入密码显示星号
- 输入密码显示星号
- 50 C语言模拟密码输入(显示星号)
- Linux下实现输入密码以星号显示
- 以星号显示密码程序!!!!!
- 输入密码以星号显示
- C语言实现密码输入显示星号 VS2010 亲测通过
- C语言实现密码输入显示星号 VS2010 亲测通过 功能加强版
- 一句代码 显示星号密码
- 控制台程序输入密码时显示星号
- datagridview中输入密码,显示星号*
- shell实现输入密码显示星号
- qt QlineEdit 输入密码显示成星号
- shell实现输入密码显示星号
- HDU1003 ---最大子序列和 subsequence
- VC switch case
- 从C#开发人员到Windows Phone 7高级开发人员只需3周
- [T1 Silverlight Training] Day 1
- Windows Phone 7开发必备工具
- Linux C : 登录密码星号 * 显示,包含能回退 backspace
- JS使用split分割字符串并应用正则匹配
- 关于安卓自定义控件的案例
- 求教正则表达式!!!!!
- jsp URL中文传值乱码问题
- 在NetBeans中使用正则表达式替换文本内容
- 【转】jquery datatable学习
- Windows Phone 7 培训总结
- linux的vi编辑器学习笔记