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這樣的庫 –