C语言要求输入密码时显示是*号
时间: 2024-10-20 08:05:37 浏览: 17
在C语言中,为了保护用户的隐私,当提示用户输入密码时通常会将输入的内容替换为星号(*)以隐藏真实的字符。这是通过控制台输入操作实现的。当你使用`scanf()`函数读取密码时,可以利用`getchar()`函数配合处理。下面是一个简单的示例:
```c
#include <stdio.h>
int main() {
char password[10];
printf("请输入密码: ");
// 使用getchar()逐个读取并替换为*
int i;
for (i = 0; i < 8 && getchar() != '\n'; ++i) { // 避免读取换行符
password[i] = '*';
}
password[i] = '\0'; // 添加终止符
printf("你输入的密码是: %s\n", password); // 显示的是'*'字符
return 0;
}
```
在这个例子中,程序先提示用户输入密码,然后使用`getchar()`循环读取字符,每读取一个就替换成'*',直到遇到换行符。最后显示的字符串只会包含'*'。
相关问题
C语言实现在输入密码时显示*,例如输入123,但是显示的是***
可以使用C语言中的getch()函数实现在输入密码时显示*的效果。具体实现方式如下:
```c
#include <stdio.h>
#include <conio.h>
int main() {
char password[20];
int i = 0;
char ch;
printf("Please enter password: ");
while ((ch = getch()) != '\r') { // 判断是否按下回车键
if (ch == '\b') { // 判断是否按下退格键
if (i > 0) {
printf("\b \b"); // 删除前一个字符
i--;
}
} else {
password[i++] = ch;
printf("*");
}
}
password[i] = '\0'; // 将密码字符串结束符设置为'\0'
printf("\nYour password is: %s", password);
return 0;
}
```
在上面的代码中,使用了getch()函数来读取用户输入的字符,并且判断了是否按下了回车键或退格键。如果是回车键,则结束密码输入;如果是退格键,则删除前一个字符;否则,将输入的字符存储在password数组中,并打印*。最后将password数组转换为字符串并输出。
c语言输入密码显示星号
在C语言中,可以使用头文件conio.h中的getch()函数来实现输入密码时显示星号的效果。具体实现方法如下:
```c
#include <stdio.h>
#include <conio.h>
int main()
{
char password[20];
int i = 0;
char ch;
printf("请输入密码:");
while ((ch = getch()) != '\r') // 当输入回车键时结束循环
{
if (ch == '\b') // 如果输入了退格键
{
if (i > 0) // 如果密码长度大于0
{
i--; // 密码长度减1
printf("\b \b"); // 输出退格符,再输出空格符,最后再输出退格符,以达到删除一个字符的效果
}
}
else // 如果输入的不是退格键
{
password[i++] = ch; // 将输入的字符存入密码数组中,并将密码长度加1
printf("*"); // 输出星号
}
}
password[i] = '\0'; // 在密码数组的末尾添加字符串结束符
printf("\n您输入的密码是:%s\n", password);
return 0;
}
```
上述代码中,使用了一个字符数组password来存储输入的密码,使用了一个变量i来记录密码的长度。在输入密码时,如果输入的是退格键,则将密码长度减1,并输出退格符、空格符和退格符,以达到删除一个字符的效果;如果输入的不是退格键,则将输入的字符存入密码数组中,并输出星号。当输入回车键时,循环结束,将字符串结束符添加到密码数组的末尾,并输出输入的密码。
阅读全文