最新的Linux下的c语言怎么隐藏输入的登录密码,并回显为* 不要getch()它没用

最新的Linux下的c语言怎么隐藏输入的登录密码,并回显为*不要getch()它没用网上搜了好多,还是没法解决。getch()没用,curses.h还有conio.h头文... 最新的Linux下的c语言怎么隐藏输入的登录密码,并回显为* 不要getch()它没用网上搜了好多,还是没法解决。getch()没用,curses.h还有conio.h头文件包含什么的linux里都没有 展开
 我来答
虚拟酱
2016-07-28 · TA获得超过299个赞
知道小有建树答主
回答量:312
采纳率:80%
帮助的人:189万
展开全部
在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;
}
更多追问追答
追问
都说了这个头文件linux库里没有
追答
curses.h里面函数的实现不在标准动态链接库中,所以编译的时候要加上-lcurses进行手动链接, 比如
gcc -o a.c -lcurses望采纳
heptnaol
2016-07-28 · TA获得超过7260个赞
知道大有可为答主
回答量:7120
采纳率:78%
帮助的人:1760万
展开全部
使用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来查看详细的手册。
更多追问追答
追问
大哥,看不懂啊
追答
你到usr/include下找这个头文件,里面都有的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友2ebe1e4f3
2016-07-28 · TA获得超过1.3万个赞
知道大有可为答主
回答量:9245
采纳率:52%
帮助的人:3243万
展开全部
可以用getchar代替,但我没用过linux
追问
getchar是要回显的,更没用了
追答
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式