ATM的C语言代码的密码输入用*代替
时间: 2024-03-30 14:38:56 浏览: 17
在C语言中,没有直接支持输入密码时用星号代替的函数。但是,我们可以使用C语言中的系统函数getch()来实现此功能。该函数可以读取单个字符,而不会在控制台上显示它。我们可以在读取密码时使用这个函数,以便在控制台上隐藏用户输入的密码。以下是修改后的ATM程序的C语言代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <conio.h> // 引入conio.h头文件
int main() {
int balance = 10000; // 初始余额
int withdraw; // 取款金额
int deposit; // 存款金额
int option; // 用户选择的操作
char password[10]; // 存储密码
while (1) {
printf("\nATM机操作菜单:\n");
printf("1. 查询余额\n");
printf("2. 取款\n");
printf("3. 存款\n");
printf("4. 退出\n");
printf("请选择您要进行的操作:");
scanf("%d", &option);
switch (option) {
case 1:
printf("您的余额为:%d\n", balance);
break;
case 2:
printf("请输入取款金额:");
scanf("%d", &withdraw);
if (withdraw > balance) {
printf("余额不足!\n");
} else {
printf("请输入密码:");
int i = 0;
while (1) {
char c = getch(); // 读取单个字符
if (c == '\r') { // 回车键结束输入
password[i] = '\0'; // 将密码字符串末尾置为'\0'
break;
} else if (c == '\b') { // 退格键删除上一个字符
if (i > 0) i--;
printf("\b \b");
} else {
password[i++] = c; // 将字符添加到密码字符串中
printf("*"); // 在控制台上用星号表示输入的字符
}
}
printf("\n");
// TODO: 检查密码是否正确
balance -= withdraw;
printf("取款成功,您的余额为:%d\n", balance);
}
break;
case 3:
printf("请输入存款金额:");
scanf("%d", &deposit);
balance += deposit;
printf("存款成功,您的余额为:%d\n", balance);
break;
case 4:
printf("谢谢使用!\n");
exit(0);
default:
printf("无效的选项!\n");
break;
}
}
return 0;
}
```
在修改后的程序中,我们使用getch()函数来读取单个字符,并在控制台上用星号来代替用户输入的字符。在输入密码时,我们使用了一个while循环,直到用户按下回车键结束输入。在读取每个字符时,我们还处理了退格键的情况,以便用户可以删除输入的字符。在实际应用中,我们还需要进一步完善密码的验证和安全性措施。