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

最新的Linux下的c语言怎么隐藏输入的登录密码,并回显为* 不要getch()它没用网上搜了好多,还是没法解决。getch()没用,curses.h还有conio.h头文件包含什么的linux里都没有

在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望采纳

追问

我试一下

大哥,还是没有该头文件啊

追答

你确定用我写的代码加上-lcurses编译会错?你看一下/usr/include/下有没有curses.h文件

追问

没有

确实没有该头文件

追答

curses库是可以在linux终端中写出字符用户界面的一个库,现在较新的版本应该是ncurses库,现在已经很少有人再去使用他了,所以想拥有这
个库并且在linux下写出自己用户界面的可以参考一下本博客,在网上搜了一下,所有的都是基于Ubuntu的安装方法,都是在联网方式下输入一句
shell命令,但是我们如果装的是虚拟机不能联网怎么办,我现在提供给大家一个下载地址,你只用下载一个压缩包,安装即可。

下载地址:http://ftp.gnu.org/pub/gnu/ncurses/

下载ncurses.tar.gz压缩文件

安装方法:

复制到一个路径:cp zxvf ncurses.tar.gz
/bin/

解压:tar zxvf ncurses.tar.gz

安装需要切换到root权限:

su root

输入密码:xxx

cd ncurses 进入解压缩的目录(注意版本)
./configure 按照你的系统环境制作安装配置文件
make 编译源代码并且编译NCURSES库
make install 安装编译好的NCURSES库

ok,到底装成功没有啊,你可以进入/usr/lib下查找是否有libncurses.so或libncurses.a这个库,也可以man initscr()看我们需要的函数存在不存在,如果存在那么恭喜你,你安装cruses库已经成功了,那么开始写自己的用户界面吧(使用curses库中函数使用方法,网上很多,我就不照本宣科了,自己动手写吧)。

追问

这么麻烦

温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-07-28
使用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下找这个头文件,里面都有的。

追问

在哪找usr/include

追答

奇怪,你明明有linux系统
/usr/include下面有头文件

第2个回答  2016-07-28
可以用getchar代替,但我没用过linux追问

getchar是要回显的,更没用了

追答

相似回答