1

我正在编写一些用于获取和存储用户密码的函数。一切正常,但是有什么方法可以用星号替换提示符下输入的内容,例如?

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

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

4

3 回答 3

4

假设 POSIX:

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

然后不会回显任何用户输入。ECHO如果要撤消此操作,请设置回标志。

于 2013-05-08T18:52:19.607 回答
3

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

于 2013-05-08T18:49:59.303 回答
1

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

于 2013-05-08T18:53:51.503 回答