Linux上的C语言中是否有任何函数允许等待用户输入而不在终端上显示他正在键入的内容? (就像当你在终端上的Linux输入密码)scanf()不显示在屏幕上
我发现的getch(),但它不工作在Linux上... :(
我发现这一点,但它太复杂了...:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <termios.h>
int main(void)
{
char buffer[100];
struct termios infos;
int size;
if (tcgetattr(STDIN_FILENO, &infos) == -1)
{
fprintf(stderr, "Erreur tcgetattr.\n");
return (EXIT_FAILURE);
}
infos.c_lflag &= ~ECHO;
if (tcsetattr(STDIN_FILENO, TCSANOW, &infos) == -1)
{
fprintf(stderr, "Erreur tcsetattr.\n");
return (EXIT_FAILURE);
}
if ((size = read(STDIN_FILENO, buffer, sizeof(char) * 100)) == -1)
{
fprintf(stderr, "Erreur durant la lecture.\n");
return (EXIT_FAILURE);
}
buffer[size - 1] = '\0';
printf("le buffer contient [%s]\n", buffer);
return (EXIT_SUCCESS);
}
可能重复:http://stackoverflow.com/questions/1413445/read-a-password-from-stdcin问题是C++,但它显示了如何禁用'stdin'回波模式。 –
为什么这太复杂了?另一种选择是使用像curses这样的库 –