首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

c语言中密码回显*号实现的途径解决方案

2012-02-10 
c语言中密码回显*号实现的途径相关部分代码如下:[code]#includestdio.h#includestring.h#defineNAME_M

c语言中密码回显*号实现的途径
相关部分代码如下:
[code]
#include   <stdio.h>
#include   <string.h>
#define   NAME_MAX   10
#define   USER_NAME   "godofcsdn\0 "
#define   PASS_WORD   "123456\0 "

int   check()
{
        char   userName[NAME_MAX]   =   { '\0 '};
        char     passWord[NAME_MAX]={ '\0 '};


        for(;   ;   )
        {
    printf( "Login: ");
                    gets   (userName);
                    printf( "Password: ");
    gets(passWord);
    if(strcmp(passWord,   PASS_WORD)   !=   0   ||   strcmp(userName,   USER_NAME)   !=   0)
                    {
            printf( "Login   Incorrect!\n ");
            setbuf(stdin,NULL);
                            continue;
                    }
                    break;
        }
        printf( "welcome\n ");
       
        return   1;

}

[/code]
在网上搜索到的都是用getch()每输入一个密码字符就回显一个*,但是我这个程序里是直接输入整个密码字符串,不知道有没有办法实现回显*?

[解决办法]
没有意义吧 用gets()获取输入 等回车键按下时函数才执行完毕 这时密码早就看到了 再回显星号应该没意义了吧 还是觉得getch()或者bioskey()好一点吧
[解决办法]
我不知道有没有这样的库函数,但是可以自己实现这样一个函数.
下面是我编写的一个,供你参考.
将gets()改为mygets(),再予以实现:

void mygets(char *str)
{
int i;
for(i=0;i <NAME_MAX-1;i++)
{
str[i]=getch();
printf( "* ");
if(str[i]== '\r ')
{
str[i]= '\0 ';
break;
}
}
if(i==NAME_MAX-1)str[i]= '\0 ';
}

热点排行