当前位置: 技术问答>linux和unix
函数问题
来源: 互联网 发布时间:2015-05-26
本文导语: 我在lunix下用getch(), 为啥编译不对呢,已经包含头文件curses.h。 请大哥大姐指点一二。 我的目的是想输入字符但是不在显示屏自动显示,由我控制是否显示该字符。 | 你是不是想达到输...
我在lunix下用getch(), 为啥编译不对呢,已经包含头文件curses.h。
请大哥大姐指点一二。
我的目的是想输入字符但是不在显示屏自动显示,由我控制是否显示该字符。
请大哥大姐指点一二。
我的目的是想输入字符但是不在显示屏自动显示,由我控制是否显示该字符。
|
你是不是想达到输入密码而不回显的效果,算你有运气,我刚好写过这样一个关闭字符回显的小函数,给你参考一下。
int CloseInputEcho(struct termios &old_flag)
{
int ret;
struct termios new_flag;
tcgetattr(fileno(stdin),&old_flag);
new_flag=old_flag;
new_flag.c_lflag&=~ECHO;
new_flag.c_lflag|=ECHONL;
ret=tcsetattr(fileno(stdin),TCSAFLUSH,&new_flag);
if(ret!=0)
{
perror("Failed to set attributes");
tcsetattr(fileno(stdin),TCSANOW,&old_flag);
exit(-1);
}
tcgetattr(fileno(stdin),&new_flag);
if((new_flag.c_lflag&ECHO)||(!new_flag.c_lflag&ECHONL))
{
perror("Failed to turn off ECHO");
tcsetattr(fileno(stdin),TCSANOW,&old_flag);
exit(-1);
}
return 0;
}
int OpenInputEcho(struct termios old_flag)
{
tcsetattr(fileno(stdin),TCSANOW,&old_flag);
}
int CloseInputEcho(struct termios &old_flag)
{
int ret;
struct termios new_flag;
tcgetattr(fileno(stdin),&old_flag);
new_flag=old_flag;
new_flag.c_lflag&=~ECHO;
new_flag.c_lflag|=ECHONL;
ret=tcsetattr(fileno(stdin),TCSAFLUSH,&new_flag);
if(ret!=0)
{
perror("Failed to set attributes");
tcsetattr(fileno(stdin),TCSANOW,&old_flag);
exit(-1);
}
tcgetattr(fileno(stdin),&new_flag);
if((new_flag.c_lflag&ECHO)||(!new_flag.c_lflag&ECHONL))
{
perror("Failed to turn off ECHO");
tcsetattr(fileno(stdin),TCSANOW,&old_flag);
exit(-1);
}
return 0;
}
int OpenInputEcho(struct termios old_flag)
{
tcsetattr(fileno(stdin),TCSANOW,&old_flag);
}
|
你需要重新设置终端的模式,具体的函数接口看看ncurses 编程手册吧!