c语言不回显输入字符串
时间: 2024-03-02 20:44:43 浏览: 183
在C语言中,可以使用scanf()函数来读取字符串,但是该函数会以空格为分隔符,遇到空格就认为当前字符串结束了,所以无法读取含有空格的字符串。如果想要读取含有空格的字符串,可以使用fgets()函数。此外,如果想要不回显输入的字符串,可以使用getch()函数来读取单个字符,然后将其存储在字符数组中,直到读取到回车键为止。
相关问题
c语言编写程序如何使运行窗口在输入字符串时不显示字符串,而是显示*****
在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`函数恢复回显输入。
c语言中,输入密码被*覆盖
在C语言中,如果想要输入密码时显示星号而不是明文,可以使用标准库中的`getch()`函数,该函数不会将输入的字符回显到屏幕上,可以有效地保护输入的密码。
以下是一个简单的示例代码,可以实现输入密码时显示星号:
```c
#include <stdio.h>
#include <conio.h> //需要用到getch()函数
int main() {
char password[20];
int i = 0;
char ch;
printf("请输入密码:");
while ((ch = getch()) != '\r') { //当输入回车时结束
if (ch == '\b') { //当输入退格时,删除前一个字符
if (i > 0) {
i--;
printf("\b \b"); //将之前的字符用空格覆盖,并将光标移回原来的位置
}
} else {
password[i++] = ch;
printf("*");
}
}
password[i] = '\0'; //将字符串最后一个字符设置为'\0',表示字符串结束
printf("\n输入的密码是:%s\n", password);
return 0;
}
```
需要注意的是,使用该方法只是简单地避免了密码明文显示,但并不能保证密码的绝对安全性,如遭受恶意攻击仍可能被破解。在实际应用中,应该选择更加安全的密码保护方案。
阅读全文