📜  用*代替字符以读取C语言中的密码(1)

📅  最后修改于: 2023-12-03 14:56:17.690000             🧑  作者: Mango

用*代替字符以读取C语言中的密码

当程序需要读取用户输入的密码时,为了保护用户的隐私和安全,一般都需要将输入字符用特殊符号代替,比如用星号*

读取密码的方法

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