看到坛子有人问“在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的太简单了。
1816

被折叠的 条评论
为什么被折叠?



