📅  最后修改于: 2023-12-03 14:56:17.690000             🧑  作者: Mango
当程序需要读取用户输入的密码时,为了保护用户的隐私和安全,一般都需要将输入字符用特殊符号代替,比如用星号*
C语言中可以使用getch()
函数来读取用户输入的字符,但该函数在标准库中并不存在。需要使用conio.h
库来实现该函数。
#include <conio.h>
char getch();
当用户输入字符时,该函数会立刻返回该字符,而不需要用户按下回车键。
使用getch()
函数读取用户输入的字符后,需要将字符用星号代替。可以使用C语言中的转义字符\b
来实现。
char c;
printf("Please input password:");
while((c = getch()) != '\r') {
printf("*"); // 输出星号代替输入的字符
password[i++] = c; // 将输入的字符存储在password数组中
}
password[i] = '\0'; // 储存字符串结束标志
该代码会不断读取用户输入的字符,当用户按下Enter
键时结束读取。在每次读取到用户输入的字符时,都会输出一个星号来代替该字符。
将上述两个代码段组合起来,即可实现输入密码时用星号代替字符的功能。
#include <stdio.h>
#include <conio.h>
int main() {
char password[20]; // 存储密码的数组
char c;
int i = 0;
printf("Please input password:");
while((c = getch()) != '\r') {
printf("*"); // 输出星号代替输入的字符
password[i++] = c; // 将输入的字符存储在password数组中
}
password[i] = '\0'; // 储存字符串结束标志
printf("\nYour password is %s\n", password);
return 0;
}
getch()
函数需要引入conio.h
头文件\b
转义字符\0