在程式中可能碰到这样的事情,您想输入一些数据,但是又不想回显到屏幕上,怎么作呢?很挠头吧......
其实这样就能够了......
我怎样能使我的程式不回射输入,就象登录时询问我的口令时那样?
有一个简单方法,也有一个稍微复杂点的方法:
简单方法是使用‘getpass()’函数,他几乎能在任何Unix系统上找到。他以一个给定的字符串参数作为提示符(prompt)。他读取输入直到读到一个‘EOF’或换行符(译者注:‘EOF’用‘^d’输入,而换行符为‘^m’或回车)然后返回一个指向位于静态内存区包含键入字符的字符串指针。(注:字符串不包含换行符)
复杂一点的方法是使用‘tcgetattr()’函数和‘tcsetattr()’函数,两个函数都使用一个‘struct termios’结构来操纵终端。下面这两段程式应当能配置回射状态和不回射状态。
两段程式使用到的都是在POSIX标准定义的,通用性很好。
#include <stdlib.h>
#include <stdio.h>
#include <termios.h> #include <string.h>
static struct termios stored_settings;
void echo_off(void)
{
struct termios new_settings;
tcgetattr(0,&stored_settings);
new_settings = stored_settings;
new_settings.c_lflag &= (~ECHO);
tcsetattr(0,TCSANOW,&new_settings);
return;
}
void echo_on(void)
{
tcsetattr(0,TCSANOW,&stored_settings);
return;
}
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!



