一个填充密码的函数,它首先从键盘上扫描一个键值,如果是字母 'f',则等待 500 毫秒后再次扫描键盘;否则,循环读取键盘输入的字符,直到输入了 6 个密码字符或者输入了 '*' 符号,并且输入的密码存储在 input_password 数组中。代码
时间: 2023-09-16 15:12:45 浏览: 54
以下是一个填充密码的函数,按照您的要求等待500毫秒并读取输入,直到输入六个字符或者输入了星号:
```c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <termios.h>
void read_password(char input_password[]) {
int i = 0;
char ch;
// 获取终端属性以禁用回显
struct termios old_term, new_term;
tcgetattr(STDIN_FILENO, &old_term);
new_term = old_term;
new_term.c_lflag &= ~(ICANON | ECHO);
tcsetattr(STDIN_FILENO, TCSANOW, &new_term);
printf("请输入密码:");
while (i < 6 && (ch = getchar()) != '*' && ch != '\n') {
if (ch == 'f') {
usleep(500000); // 等待 500 毫秒
continue;
}
input_password[i++] = ch;
}
// 恢复终端属性
tcsetattr(STDIN_FILENO, TCSANOW, &old_term);
}
```
这个函数使用了 POSIX 终端控制函数来禁用回显并实现无回车读取输入,以便在读取输入时隐藏密码。函数首先从终端上读取输入字符,如果输入的字符是 'f',则等待 500 毫秒后再次扫描键盘;否则,将输入字符添加到输入密码数组中,直到输入了 6 个密码字符或者输入了 '*' 符号。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)