在命令行程序中隐藏用户输入

时间:2013-05-08 18:48:34

标签: c

我正在编写一些用于获取和存储用户密码的函数。它的工作正常但是有没有办法用星号替换在提示符下键入的内容?

这在窗口化应用程序中是相当标准的行为我已经很好地了解了C库,但是所有fgets / getc类型的函数似乎都没有对此提供任何控制。

编辑:尝试使用ANSI C在OS X上运行。下面的答案指出了我正确的方向 - 我的搜索没有找到一些链接......

3 个答案:

答案 0 :(得分:4)

假设POSIX:

struct termios t;
tcgetattr(STDIN_FILENO, &t);
t.c_lflag &= ~ECHO;
tcsetattr(STDIN_FILENO, TCSAFLUSH, &t);

然后不会回显用户输入。如果要撤消此标记,请设置ECHO标记。

答案 1 :(得分:3)

当然,使用某种终端控制库来禁用字符回声,然后打印你喜欢的任何内容。可能性:

答案 2 :(得分:1)

您没有说明哪个平台或编译器,但请参阅ANSI C No-echo keyboard input。也许是getch()或kbhit()或getpass(),具体取决于环境。