我正在编写一些用于获取和存储用户密码的函数。一切正常,但是有什么方法可以用星号替换提示符下输入的内容,例如?
这在窗口应用程序中是相当标准的行为我已经仔细查看了 C 库,但所有 fgets/getc 类型的函数似乎都没有对此提供任何控制。
编辑:尝试使用在 OS X 上运行的 ANSI C 来执行此操作。下面的答案为我指明了正确的方向 - 我的搜索没有找到一些链接......
我正在编写一些用于获取和存储用户密码的函数。一切正常,但是有什么方法可以用星号替换提示符下输入的内容,例如?
这在窗口应用程序中是相当标准的行为我已经仔细查看了 C 库,但所有 fgets/getc 类型的函数似乎都没有对此提供任何控制。
编辑:尝试使用在 OS X 上运行的 ANSI C 来执行此操作。下面的答案为我指明了正确的方向 - 我的搜索没有找到一些链接......
假设 POSIX:
struct termios t;
tcgetattr(STDIN_FILENO, &t);
t.c_lflag &= ~ECHO;
tcsetattr(STDIN_FILENO, TCSAFLUSH, &t);
然后不会回显任何用户输入。ECHO
如果要撤消此操作,请设置回标志。
您没有说哪个平台或编译器,但请参阅ANSI C No-echo keyboard input。取决于环境,可能是 getch() 或 kbhit() 或 getpass()。