十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
void main() { char str[256]; int c,i=0;
10年积累的做网站、成都做网站经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计后付款的网站建设流程,更有防城港免费网站建设让你可以放心的选择与我们合作。
while ( 1 ) {
c=getch(); if ( c==13 ) break;
printf("*"); str[i]=c; i++;
}
str[i]=0; printf("%s\n",str);
}
在conio.h下有一个函数getch(),调用这个函数可以不显示用户输入的内容。
然后你只需要判断,用户输入后,自己往屏幕上输出一个星号,同是保存用户输入的内容即可
#include stdio.h
#include conio.h
#define MAX_STR_LEN 32
char passwd[MAX_STR_LEN] = {0};
char *GetPasswd(void)
{
char c;
int i = 0;
int len = MAX_STR_LEN-1;
while ((c=getch()) != '/r')
{
passwd[i] = c;
putchar('*');
i++;
if (i = len)
{
break;
}
}
return passwd;
}
int main(void)
{
char *dispstr = NULL;
dispstr = GetPasswd();
printf("/nthe password is : %s/n", dispstr);
return 0;
}
用for 语句和getch( );putchar (‘*’);来实现的,而getch 不分区另ENTER和BACKSPACE等特殊键,不好控制它的结束。因此只有避过问题强行规定密码必须是8位的,但在输入密码时仍然不允许用户输入ENTER和BACKSPACE等特殊键。
以下程序功能:
接受所有打印字符。
不接受控制字符,如Ctrl+ ,Alt,F1等。
可使用退格键删除以输入字符。
回车键为密码输入完毕
可定义最大字符数。当输入字符数等于最大字符个数时,视为密码结束。
#include stdio.h
#include conio.h
#define TRUE 1
#define FALSE 0
#define MIN_INPUT 0x20
#define MAX_INPUT 0x7e
/*
* 所有功能有此函数实现:
* pszPw : 保存密码的缓冲
* iMaxSize :最大的密码长度,该长度必须小于缓冲区大小。
* 返回值为TRUE为成功获取密码。总是返回TRUE
*/
int GetPassword(unsigned char* pszPw,int iMaxSize)
{
unsigned char ch;
int i=0;
int bIsEcho=TRUE;
//while( ! kbhit() iiMaxSize )
while( ( ch = (unsigned char)getch() ) i iMaxSize )
{
//ch = (unsigned char)getch();
bIsEcho=TRUE;
if ( ch == 13)
{
pszPw[i++]=0;
break;
}
else if ( ch = MIN_INPUT ch = MAX_INPUT) /*所有可打印字符*/
{
pszPw[i++]=ch;
}
else if ( ch == 8 i 0 ) /*退格键*/
{
pszPw[i--] = 0;
bIsEcho = FALSE;
putchar( ch );
putchar( ' ' );
putchar( ch );
}
else
bIsEcho = FALSE;
if(bIsEcho)
putchar('*');
}
pszPw[i]=0;
return TRUE;
}
int main(void)
{
int iMaxSize=80;
unsigned char pw[99];
if ( GetPassword(pw,iMaxSize) == TRUE ){
printf("\npassword=%s",pw);
}
else{
printf("\nCan not get the password!");
}
}
C语言中可采用getch()函数来实现输入密码字符时,不显示字符到终端上,这时,只需要显示出一个相应的*就可以达到效果了。参考代码及运行效果如下图:
不能用scanf函数的~~~因为scanf函数输入的时候会显示输入信息的~~
用getch()函数
一下是我之前写的程序~~
你参考一下就懂的了
main()
{char a[6];
int i,j,k,z,x,y,g=0;
/*密码保护系统*/
char b[]={'w','h','0','9','1','4'};
gotoxy(11,2);
printf("*****Welcome to Student Achievement Management System*****\n");
gotoxy(28,4);
printf(" Please Input Password ");
gotoxy(50,22);
printf("Editor: OnlyTigerCan");
read1:
gotoxy(36,6+g*4);
for(i=0;i6;i++)
{ for(i=0;i6;i++)
{ a[i]=getch();
printf("*");}
k=0;
for(i=0;i6;i++)
{if(strcmp(a[i],b[i])==0) k++;}
if(k!=6)
{g++;
if(g3){gotoxy(23,4+g*4);
printf("Wrong Password! Please input again.");
goto read1;}
else printf("\n\n Too Many Times of Entering Wrong Password !");
printf("\n Press Any Key to Exit");
getch();exit(0);}
else
break;}}
这个函数还有三次有效输入密码保护功能。