看到坛子有人问“在D或C下如何实现输入单个字符不回显?可能的应用比如实现一个密码验证程序”,找到了解决方案,记录下。
Python版本的容易的多,直接用getpass模块的getpass函数就OK。
import getpass
sl = getpass.getpass("Please Input Pass:")
print sl
D语言版本:百度来的C版本,修改下。
/*密码输入,回显星号的程序*/ import std.c.stdio; int main() { int i; static char str[80]; /*静态存储*/ for (i=0; i<80; i++) { str[i] = getch(); /*逐次赋值,但不回显*/ printf("*"); /*以星号代替字符个数*/ if (str[i] == '\x0d')/*回车则终止循环*/ { break; } } printf("\n"); i = 0; while (str[i] != '\x0d') { printf("%c", str[i++]);/*依次输出各元素*/ } printf("\n"); getch(); return 0; }
python的太简单了。