就是在Dos窗口中你输入字符出现的是'*'号,然后验证密码的正确性(比如密码是“12345”),如果密码错误就提示用户,若密码正确就打印:“You are passed!”,呵呵,大家有空可以做做。
这个题目最重要的地方是怎样在用户按键的时候显示星号,还有就是用户可以使用Backspace删除以前输入的内容,这里需要一点小技巧。 我对C++的I/O系统不熟悉,就用C语言实现了(不过C++是全面支持C语言的,在C++也可以这样做)
这是我写的代码(用纯C完成,在WinXP + Dev-C++环境中编译通过),大家可以参考一下:
#include <stdio.h> #include <string.h> #include <stdlib.h>
#define ADDSIZ 32
int main() { int ch; char *str; int i = 0; int maxSize = 64; str = (char *)malloc(sizeof(char)*maxSize); if(!str) /*判断内存分配是否失败*/ { printf("Memory Access Failed!\n"); exit(1); } printf("Enter password: "); while((ch = getch()) != '\r') { if(i > maxSize-1) /*是否越界*/ { maxSize += ADDSIZ; str = (char *)realloc(str, sizeof(char)*maxSize); if(!str) { printf("Memory Access Failed!\n"); exit(1); } } if(ch == 8) /*处理Backspace*/ { if(i > 0) { printf("\b \b"); /*注意这里!!*/ --i; } } else { str[i++] = ch; putchar('*'); } } str[i] = '\0'; if(strcmp(str, "12345") == 0) printf("\nYou are passed!\n"); else printf("\nPassword wrong!\n"); system("PAUSE"); return 0; }