c语言编写程序如何使运行窗口在输入字符串时不显示字符串,而是显示*****
时间: 2023-12-03 08:02:39 浏览: 110
在C语言中,可以使用Windows API函数`SetConsoleMode`和`getch`函数来实现在输入字符串时不显示字符串,而是显示`*`。具体步骤如下:
```c
#include <stdio.h>
#include <windows.h>
#include <conio.h>
int main() {
HANDLE hInput = GetStdHandle(STD_INPUT_HANDLE);
DWORD mode = 0;
GetConsoleMode(hInput, &mode);
SetConsoleMode(hInput, mode & (~ENABLE_ECHO_INPUT)); // 禁止回显输入
char password[20];
int i = 0;
char ch = 0;
while ((ch = getch()) != '\r') { // 当输入回车时结束输入
if (ch == '\b') { // 处理退格键
if (i > 0) {
i--;
printf("\b \b");
}
} else {
password[i++] = ch;
printf("*");
}
}
password[i] = '\0'; // 将字符串结尾设置为'\0'
printf("\nPassword: %s\n", password);
SetConsoleMode(hInput, mode); // 恢复回显输入
return 0;
}
```
上述代码中,首先使用`GetStdHandle`函数获取标准输入句柄,然后使用`GetConsoleMode`函数获取控制台模式。接着使用`SetConsoleMode`函数禁止回显输入。然后使用`getch`函数获取输入的字符,如果是退格键,则删除前一个字符并将计数器减1,否则将字符存入密码字符串中并输出`*`。当输入回车时,结束输入并将字符串结尾设置为`\0`。最后使用`SetConsoleMode`函数恢复回显输入。
阅读全文