最新的Linux下的c语言怎么隐藏输入的登录密码,并回显为* 不要getch()它没用
最新的Linux下的c语言怎么隐藏输入的登录密码,并回显为*不要getch()它没用网上搜了好多,还是没法解决。getch()没用,curses.h还有conio.h头文...
最新的Linux下的c语言怎么隐藏输入的登录密码,并回显为* 不要getch()它没用网上搜了好多,还是没法解决。getch()没用,curses.h还有conio.h头文件包含什么的linux里都没有
展开
3个回答
展开全部
在linux中getch可以做到不回显,但是用法比windos中复杂一点点,以下是简单实现,密码设为6位,可以按退格修改,就只写了这些功能,望采纳
#include<stdio.h>
#include<curses.h>
int main()
{
int i,j=0;
char ch;
initscr();
cbreak();
noecho();
curs_set(0);
for(i=0;i<6+2*j;i++)
{
ch=getch();
addstr("*");
if(i)
{
if(ch==127)
{
j++;
move(0,i+1-2*j);
clrtoeol();
}
}
}
getch();
endwin();
return 0;
}
#include<stdio.h>
#include<curses.h>
int main()
{
int i,j=0;
char ch;
initscr();
cbreak();
noecho();
curs_set(0);
for(i=0;i<6+2*j;i++)
{
ch=getch();
addstr("*");
if(i)
{
if(ch==127)
{
j++;
move(0,i+1-2*j);
clrtoeol();
}
}
}
getch();
endwin();
return 0;
}
更多追问追答
追问
都说了这个头文件linux库里没有
追答
curses.h里面函数的实现不在标准动态链接库中,所以编译的时候要加上-lcurses进行手动链接, 比如
gcc -o a.c -lcurses望采纳
展开全部
使用termios的API
#include<termios.h>
然后调用tcgetattr获取当前的struct termios属性
参照:
struct termios currentSetting;
tcgetatttr(0, ¤tSetting);
currentSetting.c_lflag &= ~ECHO;//取消输入回显
再调用ttcsetattr(0,TCSANOW,¤tSetting);
TCSANOW表示立即生效
需要再恢复回显时:
用 |= ECHO;
你可以man tcgetattr来查看详细的手册。
#include<termios.h>
然后调用tcgetattr获取当前的struct termios属性
参照:
struct termios currentSetting;
tcgetatttr(0, ¤tSetting);
currentSetting.c_lflag &= ~ECHO;//取消输入回显
再调用ttcsetattr(0,TCSANOW,¤tSetting);
TCSANOW表示立即生效
需要再恢复回显时:
用 |= ECHO;
你可以man tcgetattr来查看详细的手册。
更多追问追答
追问
大哥,看不懂啊
追答
你到usr/include下找这个头文件,里面都有的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以用getchar代替,但我没用过linux
追问
getchar是要回显的,更没用了
追答
哦
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询