#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 (((*p = 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 (((*p = 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;
}