社区
Linux/Unix社区
帖子详情
如何让输入字符不回显(不使用curses库)
天蛾糊
2009-10-29 01:01:12
我在做密码输入的程序,用curses库已经实现了,但我觉得不方便,想请教各位高手来指点,谢谢
比如输入一个字符显示一个*直到'\n'为止
...全文
98
1
打赏
收藏
如何让输入字符不回显(不使用curses库)
我在做密码输入的程序,用curses库已经实现了,但我觉得不方便,想请教各位高手来指点,谢谢 比如输入一个字符显示一个*直到'\n'为止
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
1 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
winter_sui
2009-10-29
打赏
举报
回复
网上搜索的:
#include <stdio.h>
#ifndef _WIN32 //Linux platform
#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
#define MAX_LEN 8
#define BACKSPACE 8
#define ENTER 13
#define ALARM 7
char *getPasswd(const char *prompt)
{
int i=0, ch;
static char p[MAX_LEN+1]="";
printf("%s", prompt);
while((ch = getch())!= -1 && ch != ENTER)
{
if(i == MAX_LEN && ch != BACKSPACE)
{
putchar(ALARM);
continue;
}
if(ch == BACKSPACE)
{
if(i==0)
{
putchar(ALARM);
continue;
}
i--;
putchar(BACKSPACE);
putchar(' ');
putchar(BACKSPACE);
}
else
{
p[i] = ch;
putchar('*');
i++;
}
}
if(ch == -1)
{
while(i != -1)
{
p[i--] = '\0';
}
return NULL;
}
p[i]='\0';
printf("\n");
return p;
}
int main()
{
char *pw = getPasswd("passwd:");
puts(pw);
puts("clearing the static buffer with 0 ...");
while(*pw)
{
*pw++=0;
}
pw=NULL;
return 0;
}
Linux系统
字符
终端界面的编程(1)——
CURSES
库
简介.pdf
CURSES
库
作为一个专门针对Linux操作系统的
字符
终端界面编程
库
,它提供了一整套功能完善的函数集合,让开发者可以快速开发出高质量的
字符
终端界面程序。
CURSES
库
的核心功能大致可以分为四个方面:窗口管理、屏幕...
curses
库
使用
指南
**
curses
库
使用
指南** `
curses
`是一个用于创建基于终端的交互式应用程序的
库
,它在Unix和类Unix系统(如Linux和macOS)上广泛
使用
。`
curses
`
库
提供了一系列函数,使得程序员可以方便地管理屏幕输出,处理键盘
输入
,...
Curses
库
参考手册
- **X/Open命名空间**:文档中提到了一个重要的命名空间——X/Open NameSpace,它规定了如何在不同的环境中正确
使用
Curses
库
。 **2.3 数据类型** - 介绍了一些基本的数据类型,如窗口、屏幕等,在
Curses
编程中具有...
curses
curses
curses
- `noecho()`:禁用
输入
回显
,即
输入
时不显示在屏幕上。 - `intrflush()`:控制缓冲区刷新行为。 - `keypad()`:允许或禁止
使用
特殊功能键。 ### 常用函数 - **屏幕更新**: - `refresh()`:刷新当前窗口到...
Python3中
使用
curses
的矩阵码雨动画_Python_下载.zip
1. **初始化
curses
**:
使用
`
curses
.initscr()`函数初始化屏幕,并通过`
curses
.cbreak()`和`
curses
.noecho()`设置非缓冲
输入
和不
回显
模式,以实现快速响应。 2. **设置颜色**:如果终端支持,可以
使用
`
curses
.start_...
Linux/Unix社区
23,217
社区成员
74,540
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章