2009-12-24 59 views

回答

3

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; 
} 
0

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

4

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

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

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

+0

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

+0

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