C语言模拟密码输入(显示星号)
以下是使用C语言模拟密码输入并显示星号的示例代码:
#include <stdio.h>
#include <conio.h>
#define MAX_PASSWORD_LENGTH 20
int main() {
char password[MAX_PASSWORD_LENGTH];
int i = 0;
char ch;
printf("Enter password: ");
while (1) {
ch = getch();
if (ch == '\r') // 用户按下回车键
break;
else if (ch == '\b') { // 用户按下退格键
if (i > 0) {
i--;
printf("\b \b"); // 在终端上删除一个字符
}
} else if (i < MAX_PASSWORD_LENGTH - 1) {
password[i] = ch;
i++;
printf("*"); // 在终端上显示星号
}
}
password[i] = '\0'; // 添加字符串终止符
printf("\nEntered password: %s\n", password);
return 0;
}
在这个示例中,我们使用了getch()
函数获取用户输入的每个字符。因为这个函数能够读取字符而不显示在终端上,所以用户输入的密码将不会被显示出来。当用户按下回车键时,密码输入结束。
如果用户按下退格键,我们将会删除前一个输入的字符并在终端上显示相应的删除操作。在示例中,我们使用\b
字符(退格符)来移动光标到前一个位置,然后打印一个空格来覆盖之前输入的字符,再次使用\b
移动光标回到删除后的位置。
注意,这个示例中的密码将以明文形式存储在字符数组中,并没有进行加密。在实际应用中,我们应该使用更安全的方式来存储密码,比如使用哈希函数进行加密。