逛奔的蜗牛

我不聪明,但我会很努力

   ::  :: 新随笔 ::  ::  :: 管理 ::
#include <iostream>
#include 
<conio.h>

/**
 * 秘密在于conio.h中的getch()从键盘中读取字符时,并不会在屏幕上输出已经输入的字符,
 * 而用一个putch('*')来哄骗,代表已经输入一个字符
 * 怪不得这个头文件要叫conio.h, con的意思就有哄骗,看来就是由此而来.
 
*/

using namespace std;

int main() {
        
char* password;
        
char* passwordConfirm;

        
int length = 4;
        password 
= new char[length + 1];
        passwordConfirm 
= new char[length + 1];

        
char* p = NULL;
        
int count = 0;

        cout 
<< "Input password : ";
        p 
= password;
        count 
= 0;
        
//fflush(stdin);
        while (((*= getch()) != 13&& count < length) {
                
// 这里不是'\n'(10), new line
                
// 而是'\r'(13), reback. 即是按下回车键,好像这个东西是linux的.
                
// 主要是与getch这个函数有关.
                putch('*');
                fflush(stdin);

                p
++;
                count
++;
        }
        password[count] 
= '\0';

        cout 
<< endl << "Confirm the password : ";
        p 
= passwordConfirm;
        count 
= 0;
        
//fflush(stdin);
        while (((*= getch()) != 13&& count < length) {
                putch(
'*');
                fflush(stdin);

                p
++;
                count
++;
        }
        passwordConfirm[count] 
= '\0';

        cout 
<< endl;
        
if (strcmp(password, passwordConfirm) == 0) {
                cout 
<< "The password is right." << endl;
                cout 
<< password << endl;
        } 
else {
                cout 
<< "Confirm password fail." << endl;
                cout 
<< password << endl << passwordConfirm << endl;
        }

        
return 0;
}










posted on 2008-04-12 03:32 逛奔的蜗牛 阅读(716) 评论(1)  编辑 收藏 引用 所属分类: C/C++

评论

# re: 控制台输入密码, 用*号掩藏 2008-04-12 09:18 大海
要是用户按回退键怎末显示呀  回复  更多评论
  


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理