我正在編寫一些獲取和存儲用戶密碼的函數。這一切都工作正常,但有什麼方法可以用星號替換提示中鍵入的內容嗎?例如?在命令行程序中模糊用戶輸入
這是窗口化應用程序中相當標準的行爲我已經通過C庫有一個很好的看法,但所有的fgets/getc類型函數似乎沒有提供任何控制。
編輯:試圖用ANSI C要做到這一點,下面OS X上運行的答案都指向我朝着正確的方向 - 我的搜索不轉了幾個環節的...
我正在編寫一些獲取和存儲用戶密碼的函數。這一切都工作正常,但有什麼方法可以用星號替換提示中鍵入的內容嗎?例如?在命令行程序中模糊用戶輸入
這是窗口化應用程序中相當標準的行爲我已經通過C庫有一個很好的看法,但所有的fgets/getc類型函數似乎沒有提供任何控制。
編輯:試圖用ANSI C要做到這一點,下面OS X上運行的答案都指向我朝着正確的方向 - 我的搜索不轉了幾個環節的...
你沒有說哪個平臺或編譯器,但看到ANSI C No-echo keyboard input。也許getch()或kbhit()或getpass(),取決於環境。
沒有看到,當我搜索,謝謝! – drjimmie1976 2013-05-08 18:59:13
謝謝卡爾。我現在在教自己C困難的方式 - 如果不使用外部庫(即C和「常見的可疑」庫,如stdlib,stdio和string?),這可能會是可能的嗎?如果這將是一個巨大的努力,那麼這可能是方式超過我的水平,但對 – drjimmie1976 2013-05-08 18:54:37
@ GasMan14感興趣1.「通常的嫌疑犯」被稱爲C標準庫,2.請參閱我的答案 - 在POSIX系統上(學習C時應該使用*)termios API是標準的,可以 – 2013-05-08 18:55:51
假設POSIX:
struct termios t;
tcgetattr(STDIN_FILENO, &t);
t.c_lflag &= ~ECHO;
tcsetattr(STDIN_FILENO, TCSAFLUSH, &t);
然後沒有用戶輸入將被呼應。如果您想撤消此設置,請將ECHO
標誌撤回。
DUplicate:http://stackoverflow.com/questions/6856635/hide-password-input-on-terminal – 2013-05-08 18:53:05
這取決於你正在寫什麼,以及你如何寫它。如果您只是捕獲用戶輸入,然後再將其打印出來,則可以通過替換字符來處理。 – 2013-05-08 18:53:09
檢查你的libc是否知道'getpass'函數。 – 2013-05-08 18:53:54