做了一个控制台方式的程序,需要用户从键盘输入用户名和密码,想实现这样的效果:
User Name: bill
Password: ******“User Name”可以使用下面代码段实现:
char szUserName[256];
printf("User Name:");
gets(szUserName);但是“Password”部分若采用上述方法实现,则无法实现显示"******"的效果,请问这样的效果如何通过标准函数实现呢?(至少要支持backspace编辑)望各位高手不吝赐教,谢谢!
User Name: bill
Password: ******“User Name”可以使用下面代码段实现:
char szUserName[256];
printf("User Name:");
gets(szUserName);但是“Password”部分若采用上述方法实现,则无法实现显示"******"的效果,请问这样的效果如何通过标准函数实现呢?(至少要支持backspace编辑)望各位高手不吝赐教,谢谢!
有没有简单通用一点儿的办法?
#include <conio.h>
#include <ctype.h>
void main( void )
{
char buffer[81];
int i, ch; printf( "Enter password: " ); /* Read in single line from "stdin" max len is 80: */
for( i = 0; (i < 80) && ((ch = _getch()) != EOF)
&& (ch != '\n'); i++ )
{
buffer[i] = (char)ch;
_putch( '*' );
} /* Terminate string with null character: */
buffer[i] = '\0';
/*if you want display the true chars in test, write to "stdout"*/
printf( "\n%s\n", buffer );
}
看起来这个小问题还不算简单也:(
#include <string.h>
#include <conio.h>using namespace std;char* getpass(const char* passwd){
static char buffer[256];
int i=0;
char ch=NULL;
printf(passwd);
while(i<127&&ch!='\r'){
ch=getch();
if(ch=='\b'){
if(i>0){
buffer[--i]=NULL;
putchar('\b');
putchar(' ');
putchar('\b');
}
else{
putchar(7);
}
}
else if(ch!='\r'){
buffer[i++]=ch;
putchar('*');
}}
buffer[i]=NULL;
return buffer;}void main(){
char* passwd;
passwd=getpass("请输入密码:");
if(strcmp(passwd,"123"))
printf("\n password is incorrect\n");
else
printf("\n welcome user!\n");
return;
}