密碼輸入的非回顯法

    最近偶然被問到一個問題,輸入密碼時怎麼不回顯輸入的字符,而只顯示*號。雖然只是一個小問題,但覺得有必要重視一下,個人解決方案如下:

//添加頭文件
#include<conio.h>
#include<string.h>

int i = 0;
char password[10];  //數組大小自定

//當輸入的不是回車符時,就把輸入的字符賦給數組的第i+1個位置
while((password[i]=getch())!='\r')                        
{
  cout<<"*";  //每輸入一個字符,就顯示一個*號
  i++;
}

//當輸入回車符時一定要把字符串結束符賦給數組最後一個位置
password[i] = '\0'; 

//當輸入的字符串與設定密碼一致時執行其他語句...
if(strcmp(password, "2010") == 0)
{
  ...
  ...
}

  但到這還是有個問題,我的程序可以在輸入密碼時可以只顯示*號,但是不能倒退刪除輸入的字符,比如說我想輸入123,但輸成了132,屏幕顯示的是***,我想刪掉32,但顯示的是******了,暫時還沒找到有效的解決辦法。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章