如何将控制台的输入转换为任何类似于输入密码的输入

问题描述:

我的意思是我希望在我登录Linux时输入密码不可见,如输入密码。我怎样才能在C和Linux下实现它。 thanx如何将控制台的输入转换为任何类似于输入密码的输入

stty(1)对我的作品在Linux中

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 

int main(void) { 
    char buf1[100], buf2[100]; 
    size_t len1, len2; 

    system("stty -echo"); 
    printf("Enter Password: "); 
    fflush(stdout); 
    fgets(buf1, sizeof buf1, stdin); 
    len1 = strlen(buf1); 
    if (len1 && buf1[len1 - 1] == '\n') buf1[--len1] = 0; 
    puts(""); 

    system("stty echo"); 
    printf("Enter Password again: "); 
    fflush(stdout); 
    fgets(buf2, sizeof buf2, stdin); 
    len2 = strlen(buf2); 
    if (len2 && buf2[len2 - 1] == '\n') buf2[--len2] = 0; 

    puts("\n\n"); 
    printf("First password: [%s]\n", buf1); 
    printf("Second password: [%s]\n", buf2); 
    return 0; 
} 

据我了解,没有标准的输入程序没有回声输入。你将不得不使用平台特定的功能。但是,如果您使用的是GUI框架,则有些文本输入字段用于密码,并且在Windows和Linux上兼容。

没有单一的解决方案可以跨平台使用。

对于Linux,您可以使用getpass() function

对于窗户,您可以尝试_getch()

+0

喜,在Windows _getch()似乎只在同一时间得到一个字符.... 我能得到通过anyfunctions一个字符串? – 2009-12-24 06:11:41

+0

我不知道任何函数不会回显并返回一个字符串。您可以在循环中调用_getch(),将输入的字符附加到字符串中,并在遇到换行符时中断。 – codaddict 2009-12-24 06:17:47