使用 getch 函式實現密碼的無回顯輸入

2021-09-26 22:44:40 字數 817 閱讀 3585

getch()是windows的conio.h中的乙個庫函式,用於讀取鍵盤輸入的資料。

getch() 函式沒有緩衝區,在鍵盤輸入乙個字元後會立即讀取,不需要等待回車鍵按下。getch() 的特別之處是它沒有回顯,使用者看不到輸入的字元。

目標

模擬密碼輸入,用*回顯;

約束密碼位數,設定為10-16位;

能夠使用刪除鍵刪除錯誤輸入。

**如下:

#include #include #include int getpassword(char *pwd);

int main() ;

printf("請輸入10-16位密碼: ");

int result = 0;

while(result != getpassword(password));

printf("密碼: %s\n", password);

return 0;

}/**

* 獲取使用者輸入的密碼

* @param pwd char* 儲存密碼的記憶體的首位址

**/int getpassword(char *pwd)

if ((ch == '\r') && (i < 10))

if ((i == 16)&&(ch != '\r'))

if ((10 <= i) && (i <= 16) && (ch == '\r'))

if (isprint(ch))

} pwd[i] = '\0';

return 0;

}

getch方法 如何實現getch 函式的功能

使用 getch 函式,需要先引入 conio.h 標頭檔案 然而,我使用的是 cygwin 作為編譯環境,找不到 conio.h 所以只能想辦法找替代方法,或者自己構造乙個具有類似功能的函式。可惜,剛學沒多久,一時之間也是沒有想到什麼合適的替代方法,若說自己構造這個函式,這就更難了。原理為 臨時關...

getch 函式實現cin的效果

眾所周知,getch 函式是用來無回顯讀入單個字元的,必須要用到傳說中的conio.h。這次,本博主給大家帶來的是用這個函式讀入字串。主要是考慮判斷按下enter ascii碼 13 和backspace ascii碼 8 兩個鍵後的狀態,注意按了退格鍵後又將原字元清空,按了回車鍵後要輸出換行。接著...

linux下實現getch 函式的功能

include int getch void tm old tm cfmakeraw tm 更改終端設定為原始模式,該模式下所有的輸入資料以位元組為單位被處理 if tcsetattr fd,tcsanow,tm 0 ch getchar if tcsetattr fd,tcsanow,tm old...