2009-12-24 34 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