读书人

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

发布时间: 2012-02-10 21:27:42 作者: rapoo

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

读书人网 >C语言

热点推荐