如何将while ((ps[j] = _getch()) != '\r') { printf("*"); j++; } ps[j] = '\0'; printf("\n");修改为输入密码时可以退格
时间: 2024-03-10 18:48:29 浏览: 27
要实现输入密码时可以退格,可以在while循环中增加判断,当输入的是退格键时,删除最后一个字符并输出对应的空格和退格符。下面是修改后的代码:
```c
#include <stdio.h>
#include <conio.h>
#define MAX_PASSWORD_LEN 20
int main() {
char password[MAX_PASSWORD_LEN + 1] = {0};
int i = 0;
char ch = 0;
printf("Please enter your password: ");
while (1) {
ch = _getch();
if (ch == '\r') { // 回车键结束输入
password[i] = '\0';
break;
} else if (ch == 8 && i > 0) { // 退格键删除上一个字符
i--;
printf("\b \b"); // 输出空格和退格符
} else if (ch >= 32 && ch <= 126 && i < MAX_PASSWORD_LEN) { // 输入有效字符
password[i] = ch;
i++;
printf("*");
}
}
printf("\nYour password is: %s\n", password);
return 0;
}
```
在上述代码中,我们使用了和之前相同的方法读取用户输入的字符,并使用字符数组来保存用户输入的密码。当读取到退格键时,我们通过输出一个空格和退格键来模拟删除上一个字符的效果。
需要注意的是,此处使用的是`_getch()`函数,而不是`getch()`函数。因为`_getch()`函数可以接收特殊控制字符,可以处理退格键等特殊字符。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.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)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)