#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; }